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))
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号