这是我在学习MongoDB时的学习笔记,并且结合Python调用mongodb数据库
MongoDB 基础 1.SQL概念和MongoDB概念对比
SQL概念
MongoDB概念
说明
database
database
数据库
table
collection
数据库表/集合
row
document
数据行/文档
column
field
数据字段列/域
index
index
索引
primary kye
primery key
主键,MongoDB 自动将_id字段设置为主键
2.创建/删除数据库 创建数据库的语法:
如果数据库不在则创建数据库,否则切换到指定数据库 查看所有数据库:
删除数据库(删除当前数据库):
创建数据库再删除示例
3.集合中文档的增删改查 插入文档
1 2 3 4 5 6 7 8 db .COLLECTION_NAME .insert (document ) 示例: >db .python .insert ({title : 'python' , description: '动态语言' , url: 'http://www.python.org' , tag: ['动态' , '编程' , '脚本' ], likes: 100 })
以上示例中python是我们的集合名称,如果该集合不在该数据库中,MongoDB会自动创建该集合并插入文档。插入的数据必须符合json格式
查询文档
1 2 3 db .COLLECTION_NAME .find ().pretty () 示例代码:db .python .find ()
pretty()只是以易读的方式来读取数据,可以不加
MongoDB中的条件语句和操作符
操作
格式
示例
等于
{<key>:<value>}
db.python.find({“likes”:100}).pretty()
小于
{<key>:$lt<value>}
db.python.find({“likes”:{$lt:100}}).pretty()
小于或等于
{<key>:$lte<value>}
db.python.find({“likes”:{$lte:100}}).pretty()
大于
{<key>:$gt<value>}
db.python.find({“likes”:{$gt:100}}).pretty()
大于或等于
{<key>:$gte<value>}
db.python.find({“likes”:{$gte:100}}).pretty()
不等于
{<key>:$ne<value>}
db.python.find({“likes”:{$ne:100}}).pretty()
查询中的and和or
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 通过find ()的方法传入多个key,实现and : >db .COLLECTION_NAME.find ({key1:value1, key2:value2}).pretty() 查找python集合中likes大于等于100切title等于python的文档,示例如下: >db.python.fing({"like" : {$gte :100}, "title" ::"python" }).pretty() 通过“$or ”关键字实现or 条件语句 查找集合中likes大于等于199或者title等于python的文档,示例如下: >db.python.find ( { $or : { {"likes" :{$gte :100}},{"title" :"python" } } } ).pretty() 联合使用and 和or >db.python.find ({"like" : {$gt :50}, $or : [{"description" :"动态语言" },{"title" :"python" }]}).pretty()
更新文档 把title的Python改为Python爬虫,multi默认为false,只更新找到的第一条记录,如果参数为true,就按条件查出来多条记录全部更新,还有一个upse参数,这个参数模式为false,如果设置为true,则如果不存在update记录就插入新的文档
1 2 示例: >db.python .update ({'title' :'python' },{$se t: {'title' :'Python爬虫' }},{multi:ture})
删除文档 参数justOne如果设置为true或1,则只删除一个文档
1 2 示例: >db.python.remove ({'tit;e’:' Mongodb'})
4.Python操作mongodb 建立连接
1 2 3 client = pymongo.MongoClient() client = pymongo.MongoClient('localhost' ,27017 ) client = pymongo.MongoClient('mongodb://localhost:27017/' )
获取数据库
1 2 3 db = client .papers 如果数据库名字导致属性访问方式不能用(比如pa-pers),可以通过字典的方式访问数据库,示例: db = client ['pa-pers' ]
获取一个集合
1 2 3 collection = db.books或者: collection = db['books']
插入文档 数据在MongoDB中是以JSON文件形式保存的。在pymongo中用字典的形式来代表文档,使用insert()插入文档
1 2 3 4 5 6 示例: book ={"author" : "mike" , "text" :"My first book!" , "tags" :["爬虫" , "python" , "网络" ], "data" :datatime.tatatime.utcnow() book_id = coolection.insert(book)
查询文档
1 2 3 4 5 6 collection.find_one() #返回一个符合条件的字典类型值可以修改find_on({'' author": " mike 如果想获取多个文档,可以使用find ()方法。find ()返回一个Cursor实例,调用如下:for book in collection.find ({"author" : "mike" }): print book 如果想知道符合查询条件的文件有多少可以用count ()操作,示例: collection.find ({"author" :"mike" }).count ()
修改、删除文档
1 2 collection.update({"author" :"mike" },{"$set " :{"text" :"python book" }}) #修改文档 collection.remove ({"author" :"mike" })