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() 方法来删除多个文档,该方法第一个参数为查询对象,指定要删除哪些数据。