2-4 Python 访问MongoDB

第1关:python连接MongoDB写入数据

通过默认端口创建本地连接

import pymongo
client=pymongo.MongoClient(host='localhost',port=27017)
mydb = client["mydb"]
注:默认端口为27017

创建mydb数据库及集合test,并向集合中写入要求的数据,写入后的结果集以mycol对象返回

mycol = mydb["test"]
document=[{'_id':1,'name':'RUNOOB','cn_name':'菜鸟教程'},{'_id':2,'name':'Google','address':'Google 搜索'},{'_id':3,'name':'Facebook','address':'脸书'},{'_id':4,'name':'Taobao','address':'淘宝'},{'_id':5,'name':'Zhihu','address':'知乎'}];
mycol.insert_many(document)

(1)插入文档 在数据库中存储数据时,首先指定使用的集合,然后使用集合的insert_one()方法插入文档

(2)可以使用方法insert_many()同时插入多个文档

注:题目要求返回结果集,实际是返回集合(return mycol)

第2关:检索文档

建立mydb2数据库

myclient = pymongo.MongoClient(host='127.0.0.1',port=27017)
mydb2 = myclient["mydb2"]

判断数据库mydb2中是否存在集合“test2”,如果存在则删除,重新创建同名集合

collist = mydb2.list_collection_names()
if "test2" in collist:
    mydb2.drop_collection("test2")
test2 = mydb2["test2"]

删除集合:db.drop_collection("col")

db是你的数据库,col是你想删除的集合

向集合中写入数据对象mylist2,并查找age大于等于21的name

mylist2=[{_id:1,name:"Xiaoming",sex:"man",age:21},{_id:2,name:"Xiaohong",sex:"woman",age:20},{_id:3,name:"Xiaoliang",sex:"man",age:22}]
test2.insert_many(mylist2)
mycol_read = test2.find({"age":{"$gte":21}},{"name":1})
除了_id你不能在一个对象中同时指定 0 和 1,如果你设置了一个字段为 0,则其他都为 1,反之亦然。

第3关:更新数据

update用法

my_set.update(
   ,    #查询条件
   ,    #update的对象和一些更新的操作符
   {
     upsert: ,    #如果不存在update的记录,是否插入
     multi: ,        #可选,mongodb 默认是false,只更新找到的第一条记录
     writeConcern:     #可选,抛出异常的级别。
   }
)

update_one():修改满足条件的第一条

update_many():修改满足条件的所有条

准备数据

myclient = pymongo.MongoClient(host='127.0.0.1',port=27017)
mydb3 = myclient["mydb3"]
if("test3" in mydb3.list_collection_names()):
    mydb3.drop_collection("test3")
mycol3 = mydb3["test3"]
mylist3=[{_id:1,name:"Xiaoming",sex:"man",age:21},{_id:2,name:"Xiaohong",sex:"woman",age:20},{_id:3,name:"Xiaoliang",sex:"man",age:22}];

写入数据对象,修改"Xiaohong"的年龄为23,并将修改后的对象返回

mycol3.insert_many(mylist3)
mycol_update = mycol3.update_one({"name":"Xiaohong"},{"$set":{"age":23}})

拓展:删除数据

使用 delete_one() 方法来删除一个文档,该方法第一个参数为查询对象,指定要删除哪些数据。

使用 delete_many() 方法来删除多个文档,该方法第一个参数为查询对象,指定要删除哪些数据。

最后修改:2021 年 10 月 11 日 10 : 55 AM