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))

 

posted @ 2019-07-18 09:22  Amorphous  阅读(348)  评论(0编辑  收藏  举报