导入pymongo模块
import pymongo
初始化参数
host = '10.0.0.2'
port = 27017
database = 'dbtest'
collection = 'tabletest'
username = 'test'
password = '123456'
clint = "mongodb://%s:%d"%(host,port)
连接到mongo数据库服务器
mg_client = pymongo.MongoClient(clint)
显示mongo数据库列表
print(mg_client.list_database_names())
连接到指定的mongo数据库
mg_database = mg_client[database]
注意:在mongoDB中,数据库只有在内容插入后才会创建 ,即数据库创建后要创建集合(数据表)并插入一个文档(记录),数据库才会真正创建。
显示mongo数据库数据集列表
print(mg_database.list_collection_names())
连接mongo数据库指定数据集
mg_collection = mg_database[collection]
意:在mongoDB 中,集合只有在内容插入后才会创建 ,即创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。
向mongo数据库插入数据
- 向数据集插入单个dict数据,如果成功返回插入数据的ID
mydict = { "key": "1", "value": "b" }
result = mg_collection.insert_one(mydict)
print(result.inserted_id)
- 向mongo数据集插入多个dict的列表,如果成功返回多个ID
mylist = []
for key,value in enumerate('abc'):
mylist.append(dict(zip(('key','value'),(key,value))))
result = mg_collection.insert_many(mylist)
print(result.inserted_ids)
- 为插入mongo数据集的多个数据指定ID
mylist = []
for key,value in enumerate('efg'):
mylist.append(dict(zip(('_id','key','value'),(key,key,value))))
result = mg_collection.insert_many(mylist)
print(result.inserted_ids)
从mongo数据库查询数据
- 从mongo数据库查询一条纪录
result = mg_collection.find_one()
print(result)
- 从mongo数据集查询所有数据
result = mg_collection.find()
for item in result:
print(item)
- 使用find()方法查询指定字段的数据
将需要返回的字段对应值设置为1即可。
注意:除了"_id",你不能在一个对象中同时指定 0 和 1,如果你设置了一个字段为 0,则其他都为 1,反之亦然, 同时指定了 0 和 1 则会报错
result = mg_collection.find({},{'_id':0,'key':1,'value':1})
for item in result:
print(item)
- 在 find() 中设置参数来过滤数据
查询条件用dict表示
result = mg_collection.find({'key':1},{'_id':0,'key':1,'value':1})
for item in result:
print(item)
- 返回指定条数记录
result = mg_collection.find().limit(3)
for item in result:
print(item)
mongoDB使用sort对查询结果进行排序
sort() 方法第一个参数为要排序的字段,第二个字段指定排序规则,1 为升序,-1 为降序,默认为升序。
result = mg_collection.find().sort('value',-1)
for item in result:
print(item)
修改记录
- 使用update_one() 方法修改文档中的一条记录
该方法第一个参数为查询的条件,第二个参数为要修改的字段。
如果查找到的匹配数据多于一条,只会修改第一条。
query = {'key':1}
newvalue = { "$set": { "value": "B" } }
result = mg_collection.update_one(query,newvalue)
print(result.matched_count,result.modified_count,result.upserted_id,result.raw_result)
- 使用 update_many()修改匹配上的所有记录
query = {'key':2}
newvalue = { "$set": { "value": "C" } }
result = mg_collection.update_many(query,newvalue)
print(result.matched_count,result.modified_count,result.upserted_id,result.raw_result)
删除数据
- delete_one()方法来删除一条记录
该方法第一个参数为查询对象 。
query = {'key':2}
result = mg_collection.delete_one(query)
print(result.deleted_count,result.raw_result)
- delete_many() 方法删除多个文档
该方法第一个参数为查询对象,指定要删除哪些数据。
query = {'key':0}
result = mg_collection.delete_many(query)
print(result.deleted_count,result.raw_result)
- delete_many() 方法如果传入的是一个空的查询对象,则会删除集合中的所有文档
空查询对象用{}表示 。
result = mg_collection.delete_many({})
print(result.deleted_count,result.raw_result)
使用 drop() 方法来删除一个集合
删除成功 drop() 返回 true,删除失败(集合不存在)则返回 false。
result = mg_collection.drop()
print(result)```