Python 操作MongoDB

安装第三方模块pymongo并导入

import pymongo

conn = pymongo.MongoClient("127.0.0.1", 27017)  # 给定IP和端口
mong_db = conn["user"]  # user :数据库名称

增加

mong_db.user.insert_one({"name":"wl"},{"age":18}) #增加单条数据
mong_db.user.insert_many([{"name":"wl"},{"age":18}]) #增加多条数据,插入的数字为int
mong_db.user.insert_one({"name":"zs","age":99,"hobby":["抽烟","喝酒","烫头"]})

查询

# find():查询出来的是一个生成器
ret = list(mong_db.user.find())
print(ret)

#查看一条age为18的数据,{"_id":0}:0为Flase,不显示ID
ret = mong_db.user.find_one({"age":18},{"_id":0})
print(ret)

#or:或查询
ret = list(mong_db.user.find({"$or":[{"name":"wl"},{"age":18}]},{"_id":0}))
print(ret)

#in 查询
ret = list(mong_db.user.find({"name":{"$in":["wl","WL"]}},{"_id":0}))
print(ret)

修改

ret = mong_db.user.update_one({"name":"wl"},{"$set":{"age":22}})
print(ret.modified_count) #modified_count :会返回执行了多少条数据

#将用户zs的hobby中的烫头改为大保健
mong_db.user.update_one({"hobby":"烫头","name":"zs"},{"$set":{"hobby.$":"大保健"}})

删除

MONGO_DB.users.delete_one({"name":3}) #删除单个
MONGO_DB.users.delete_many({"name":"alexDSB"}) #删除多个

例:存储游戏人物的装备并修改

ret = mong_db.user.insert_many([{"name": 1, "package": [{"name": "绿玉屠龙", "act": 999, "p": "带有毒素属性"},
                                                  {"name": "麻痹戒指", "act": 15, "p": "可让对方处于麻痹状态"}]},
                          {"name": 2, "package": [{"name": "绿玉屠龙", "act": 999, "p": "带有毒素属性"},
                                                  {"name": "麻痹戒指", "act": 15, "p": "可让对方处于麻痹状态"}]},
                          {"name": 3, "package": [{"name": "绿玉屠龙", "act": 999, "p": "带有毒素属性"},
                                                  {"name": "麻痹戒指", "act": 15, "p": "可让对方处于麻痹状态"}]},
                          ])
print(ret,dir(ret),ret.inserted_ids)

卖掉剧毒开天换取元宝

user_info = mong_db.users.find_one({"name":1})

i = 0
for index,item in enumerate(user_info.get("package")):
    if item.get("name") == "剧毒开天":
        i = index
user_info["package"].pop(i)

if user_info.get("yuanbao"):
    user_info["yuanbao"] += 99
else:
    user_info["yuanbao"] = 99

mong_db.users.update_one({"_id":user_info.get("_id")},{"$set":user_info})
原文地址:https://www.cnblogs.com/wanglan/p/10609761.html