python操作MongoDB
下载
pip install pymongo
PyMongo支持CPython 2.6,2.7,3.3+,PyPy和PyPy3
使用MongoClient建立连接
from pymongo import MongoClient mg_client = MongoClient("127.0.0.1",27017)
获取数据库
db = mg_client.mgdb print(db) Database(MongoClient(host=['127.0.0.1:27017'], document_class=dict, tz_aware=False, connect=True), 'mgdb')
获取集合
集合是存储在MongoDB中的一组文档,可以类似于关系数据库中的表。 在PyMongo中获取集合的工作方式与获取数据库相同
tab = db.haha print(tab) Collection(Database(MongoClient(host=['127.0.0.1:27017'], document_class=dict, tz_aware=False, connect=True), 'mgdb'), 'haha')
文档
MongoDB中的数据使用JSON方式来表示文档(并存储)。 在PyMongo中使用字典来表示文档
from pymongo import MongoClient mg_client = MongoClient("127.0.0.1",27017) data = { "user":"invoker", "age":25, "sex":"man" }
插入文档
要将文档插入到集合中,可以使用insert_one()
方法:
插入一条文档
from pymongo import MongoClient mg_client = MongoClient("127.0.0.1",27017) db = mg_client.mgdb data = { "user":"invoker", "age":25, "sex":"man" } res = db.haha.insert_one(data) print(res.inserted_id)
要将文档插入到集合中,可以使用insert_many()
方法:
插入多条文档
from pymongo import MongoClient mg_client = MongoClient("127.0.0.1",27017) db = mg_client.mgdb data = { "user":"invoker", "age":25, "sex":"man" } data2 = { "name":"mongo", "db":"haha" } res = db.haha.insert_many([data,data2]) # 注意。这是是用列表包起来的 print(res.inserted_ids) # 这里就是 ids 了。因为是多条数据
查询文档
使用 find({}) 查找出所有数据
from pymongo import MongoClient mg_client = MongoClient("127.0.0.1",27017) db = mg_client.mgdb res = db.haha.find({}) print(res) for i in res: print(i) <pymongo.cursor.Cursor object at 0x000001E8E002EC18> {'_id': ObjectId('5d2f26e6b39957f6df66c45f'), 'user': 'invoker', 'age': 25, 'sex': 'man'} {'_id': ObjectId('5d2f26e6b39957f6df66c460'), 'name': 'mongo', 'db': 'haha'}
使用 find_one 找出符合指定条件的一条数据,如果有多条数据。返回第一条
from pymongo import MongoClient mg_client = MongoClient("127.0.0.1",27017) db = mg_client.mgdb res = db.haha.find_one({"name":"tom"}) print(res) {'_id': ObjectId('5d2f03fe10c2764480fc19b5'), 'name': 'tom'}
修改文档
使用 update_one 修改符合条件数据,如果有多条数据,修改第一条
from pymongo import MongoClient mg_client = MongoClient("127.0.0.1",27017) db = mg_client.mgdb res = db.haha.update_one({"user":"invoker"},{"$set":{"user":"tom22"}}) print(res.modified_count)
使用 update_many 修改符合条件的所有数据
from pymongo import MongoClient mg_client = MongoClient("127.0.0.1",27017) db = mg_client.mgdb res = db.haha.update_many({"user":"invoker"},{"$set":{"user":"tom22"}}) print(res.modified_count)
删除文档
使用 delete_one 删除符合指定条件的一条数据
from pymongo import MongoClient mg_client = MongoClient("127.0.0.1",27017) db = mg_client.mgdb res = db.haha.delete_one({"name":"invoker"}) print(res)
使用 delete_many 删除符合指定条件的所有数据
from pymongo import MongoClient mg_client = MongoClient("127.0.0.1",27017) db = mg_client.mgdb res = db.haha.delete_many({"name":"tom22"}) print(res)
使用 delete_many({}) 清空所有数据
from pymongo import MongoClient mg_client = MongoClient("127.0.0.1",27017) db = mg_client.mgdb res = db.haha.delete_many({}) print(res)
模糊查询
使用正则表达式查询
from pymongo import MongoClient mg_client = MongoClient("127.0.0.1",27017) db = mg_client.mgdb res = db.haha.find({"name":{"$regex":"A"}}) # 查询名字中有 A 的所有数据 和正常的正则表示一样。可以使用 ^ $ print(res)