Loading... # **2-4 Python 访问MongoDB** ## 第1关:python连接MongoDB写入数据 ### 通过默认端口创建本地连接 ```python import pymongo client=pymongo.MongoClient(host='localhost',port=27017) mydb = client["mydb"] ``` > 注:默认端口为27017 ### 创建mydb数据库及集合test,并向集合中写入要求的数据,写入后的结果集以mycol对象返回 ```python mycol = mydb["test"] ``` ```python 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':'知乎'}]; ``` ```python mycol.insert_many(document) ``` > (1)插入文档 在数据库中存储数据时,首先指定使用的集合,然后使用集合的insert_one()方法插入文档 > > (2)可以使用方法insert_many()同时插入多个文档 > 注:题目要求返回结果集,实际是返回集合(`return mycol`) ## 第2关:检索文档 ### 建立mydb2数据库 ```python myclient = pymongo.MongoClient(host='127.0.0.1',port=27017) mydb2 = myclient["mydb2"] ``` ### 判断数据库mydb2中是否存在集合“test2”,如果存在则删除,重新创建同名集合 ```python 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 ```python 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}] ``` ```python test2.insert_many(mylist2) mycol_read = test2.find({"age":{"$gte":21}},{"name":1}) ``` > 除了`_id`你不能在一个对象中同时指定 0 和 1,如果你设置了一个字段为 0,则其他都为 1,反之亦然。 ## 第3关:更新数据 **update用法** ```python my_set.update( , #查询条件 , #update的对象和一些更新的操作符 { upsert: , #如果不存在update的记录,是否插入 multi: , #可选,mongodb 默认是false,只更新找到的第一条记录 writeConcern: #可选,抛出异常的级别。 } ) ``` > update_one():修改满足条件的第一条 > > update_many():修改满足条件的所有条 ### 准备数据 ```python 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 © 允许规范转载