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