MongoDB 之 Python 操作
一、安装pymango
pip install pymongo # 安装pymango
二、连接python中pymango
from pymongo import MongoClient from bson import ObjectId from pymongo.cursor import Cursor # 实例化一个MongoDBd对象 m_client = MongoClient(host="127.0.0.1", port=27017) # 连接mongodb中的tab表,有则连接,没有则新建 mdb = m_client["tab"]
三、python的mangodb增加操作
# 增: # 创建一条记录,返回是对象 res = mdb.stu.insert_one({"name": "alex"}) print(res,dir(res)) # 添加多条数据 res = mdb.stu1.insert_many([{"name": "小明", "sex": "男", "age": 14}, {"name": "小张", "sex": "女", "age": 17}, {"name": "小红", "sex": "女", "age": 15}]) print(res.inserted_ids)
四、python的mangodb查询操作
# 查看结果的第一条记录 res = mdb.stu.find_one() print(res) # 查询多条记录 res = mdb.stu.find({}) print(list(res)) print(res, list(res)) # 强转为list类型 # 遍历数据结构 for user in res: print(user) # ObjectId类型数据不能dumps,需要把ObjectId数据类型转换成字符串 res = list(res) for index, user in enumerate(res): # ObjectId转化成str res[index]["_id"] = str(user.get("_id")) # 返回一个json数据类型 import json print(json.dumps(res))
五、python中的mangodb修改操作
# 修改一条数据 res = mdb.stu.update_one({"name": "小黑"}, {"$set": {"name": "小花"}}) print(res.modified_count) # 通过字典修改一条数据,在写入数据库 user = mdb.stu.find_one({"name": "小花"}) print(user) user["age"] = 23 user["sex"] = "男" user["hobby"] = ["抽烟", "喝酒", "烫头"] res = mdb.stu.update_one({"name": "小花"}, {"$set": user}) print(res.modified_count) # 修改多条数据 res = mdb.stu.update_many({"name": {"$in": ["小花", "小红"]}}, {"$set": {"sex": "女"}}) print(res.modified_count) # 增加引用计数 res = mdb.stu.update_many({}, {"$inc": {"age": 1}}) print(res.modified_count) # 减少引用计数 res = mdb.stu.update_many({}, {"$inc": {"age": -1}}) print(res.modified_count)
六、python中的mangodb删除操作
# 默认删除第一条数据 res = mdb.stu.delete_one({}) print(res.deleted_count) # 删除多条数据 res = mdb.stu.delete_many({"name": {"$in": ["小红", "小花"]}}) print(res.deleted_count) # 删除一条数据中的某个字段 res = mdb.stu.update_one({"name": "小红"}, {"$unset": {"age": 1}}) print(res.modified_count)
七、python中的mangodb排序(sort) + 跳过(skip) + 选取(limit)
# 正序
res = mdb.stu.find({}).sort("age", pymongo.ASCENDING)
print(list(res))
# 倒序
res = mdb.stu.find({}).sort("age", pymongo.DESCENDING)
print(list(res))
# 跳过(skip)
res = mdb.stu.find({}).skip(2)
print(list(res))
# 先排序,在跳过
res = mdb.stu.find({}).sort("age", pymongo.ASCENDING).skip(2)
print(list(res))
# 选取(limit)
res = mdb.stu.find({}).limit(2)
print(list(res))
res = mdb.stu.find({}).sort("age", pymongo.ASCENDING).skip(2).limit(2)
print(list(res))
八、mangodb中$的特殊用法
# $的特殊用法: res = mdb.stu.insert_one({"name": "小谢", "hobby": [1, 2, "3", 4, 5]}) print(res.inserted_id) # 存储当前(Array)符合条件的元素下标索引 ,只能存储最外层的 索引位置 res = mdb.stu.update_one({"hobby": 3}, {"$set": {"hobby.$": "三"}}) print(res.modified_count)
九、python中的mangodb查询关键字
# 并列查询(and) res = mdb.stu.find({"name": "小花", "age": 13}) print(list(res)) res = mdb.stu.find({"$and": [{"name": "小花"}, {"age": 13}]}) print(list(res)) # 或条件查询(or) res = mdb.stu.find({"$or": [{"name": "小花"}, {"name": "小黑"}]}) print(list(res)) # 子集查询(all),只针对Array有效 res = mdb.stu.find({"hobby": {"$all": [1, 4]}}) print(list(res)) # 范围查询(in) res = mdb.stu.find({"name": {"$in": ["annie", "黑黑", "小红", "小黑"]}}) print(list(res))
https://www.cnblogs.com/WiseAdministrator/