安装模块
连接数据库
from pymongo import MongoClient
connect = MongoClient(host="127.0.0.1", port=27017) # 连接到数据库主机
# 返回一个连接
# MongoClient(host=[‘127.0.0.1:27017‘], document_class=dict, tz_aware=False, cOnnect=True)
db = connect["day120"] # 获取指定库的连接
查 find
# 查询匹配到的所有数据
print(list(db.table01.find()))
# 查询table01这张表的所有数据, 返回的是一个能够迭代的对象(使用迭代器的方法取值)
# 当查询一个不存在或者为空的表时, 返回一个空列表
# 查询匹配到的所有数据
print(db.table01.find_one({"name": "sath"}))
# 查询到: 返回一个字典, 注意字典中有ObjectId对象
# 查询不到返回一个None
增加 insert
# 插入一条数据
ret = db.table01.insert_one({"name": "yyy"})
# insert_one: 返回一个插入结果对象(InsertOneResult)
# 使用InsertOneResult.inserted_id能够获取到刚插入的数据的ObjectId类型的对象
print(str(ret.inserted_id), type(ret.inserted_id))
# 5c2987a219b4ead318f8efc3
# 插入多条数据
ret = db.table01.insert_many([{"name": "xxx"}, {"name": "yyy"}])
print(ret, type(ret), dir(ret))
# 插入多条数据, 返回的是InsertManyResult对象
# 使用InsertManyResult.inserted_ids能获取插入的所有数据的ObjectId
print(ret.inserted_ids)
# [ObjectId(‘5c2988e319b4eafb7416e67c‘), #ObjectId(‘5c2988e319b4eafb7416e67d‘)]
# 返回的是一个列表, 里面存放所有的刚插入的数据的ObjectId
ids = list(map(lambda x: str(x), ret.inserted_ids))
print(ids)
# [‘5c2988e319b4eafb7416e67c‘, ‘5c2988e319b4eafb7416e67d‘]
更新 update
db.table01.update({条件}, {修改的值})
# 值相等的不会被更新
# 更新匹配到的第一数据
# ret = db.table01.update({"name": "yyy"}, {"$set": {"age": 68}})
print(ret, type(ret), dir(ret))
# 返回一个字典
# {‘n‘: 1, ‘nModified‘: 1, ‘ok‘: 1.0, ‘updatedExisting‘: True}
# 更新匹配到的第一条数据
ret = db.table01.update_one({"name": "yyy"}, {"$set": {"age": 48}})
print(ret, type(ret), dir(ret))
# 返回一个更新结果对象
# 更新所有匹配到的数据
ret = db.table01.update_many({"name": "yyy"}, {"$set": {"age": 45}})
# 返回一个更新结果对象
# ret.modified_count 更新的条目数 7
# ret.raw_result 更新的结果信息 {‘n‘: 7, ‘nModified‘: 7, ‘ok‘: 1.0, ‘updatedExisting‘: True}
# ret.matched_count # 匹配到的条目数 7
print(ret, type(ret), dir(ret))
删除 delete, remove
# 删除匹配到第一条数据
db.table01.delete_one({条件})
ret = db.table01.delete_one({"name": "sath"})
print(ret.raw_result, type(ret), dir(ret))
# 返回删除的结果对象
# {‘n‘: 1, ‘ok‘: 1.0}
# 常用方法:
# ‘deleted_count‘,
# ‘raw_result‘
# 删除所有匹配到的数据
ret = db.table01.delete_many({"name":"xxx"})
print(ret.raw_result, type(ret), dir(ret))
# 返回一个删除结果对象
# 常用方法
# ‘deleted_count‘,
# ‘raw_result
# 删除所有的数据
ret = db.table01.remove()
print(ret, type(ret), dir(ret))
# 返回一个字典
# {‘n‘: 17, ‘ok‘: 1.0}
使用python操作MongoDB