pymongo的使用
通过上一篇博客的阅读学习,我们对于MongoDB的原生数据库操作语句已经用了大体上的掌握,那么在我们的程序中用什么来帮助我们对数据库进行操作呢?
没错!就是我们的pymongo模块了
pip3 install pymongo安装
python -m pip install pymongo 上面执行报错的可以试试这一条命令(前提环境变量配置对应了)
链接MongoDB
import pymongo mongo_conn=pymongo.MongoClient(host="127.0.0.1",port=27017) mongo_db = mongo_conn['demo']
增
res=mongo_db.student.insert_one({"name":"瞎子","age":20}) print(res) #<pymongo.results.InsertOneResult object at 0x000000A76F12FF08> print(res.inserted_id) #5b7e3132ec882c1c285372cd res=mongo_db.student.insert_many([{"name":"亚索"},{"name":"石头人"}]) print(res) #<pymongo.results.InsertManyResult object at 0x000000B934E4FEC8> print(res.inserted_ids) #[ObjectId('5b7e31c3ec882c2194a18512'), ObjectId('5b7e31c3ec882c2194a18513')]
注意插入一条数据和多条数据执行结果返回值的区别inserted_id,inserted_ids
查
res=mongo_db.student.find({"name":"小强"}) for i in res: print(i) ''' {'_id': ObjectId('5b7e15decc299a1858801264'), 'name': '小强', 'gender': '男', 'age': 18.0} ''' res=mongo_db.student.find_one() print(res) ''' {'_id': ObjectId('5b7e15b3cc299a1858801263'), 'name': '元少', 'gender': '男', 'age': 18.0} '''
改
res=mongo_db.student.update_one({"name":"亚索"},{"$set":{"age":888}}) print(res.raw_result)
#{'n': 1, 'nModified': 0, 'ok': 1.0, 'updatedExisting': True}
看到这里,是不是感觉跟原生的操作语句大差不差的呢?没错!可以说是完全一样的。所以直接看我上一篇博客,带你快速入门MondoDB操作哦~~~
删
res=mongo_db.student.delete_one({"name":"石头人"}) print(res.deleted_count)#获取删除的条数 print(res.acknowledged)#True 这个参数可以用来判断执行是否成功,返回结果是True或者False
干货
细心的小伙伴应该对MongoDB中自动生成的_id感到一丝疑惑吧,并且你想通过_id来查询数据的时候,会发现根本查不到,怎么试都不行,明明字符串写的一模一样。
原因就在于数据的_id对应的是ObjectId类型,我们单纯用字符串想去匹配它是不行的
这个时候就需要借助一个json的二哥bson模块了~~~
import pymongo mongo_conn=pymongo.MongoClient(host="127.0.0.1",port=27017) mongo_db = mongo_conn['demo'] from bson import ObjectId res=mongo_db.school.find_one({"_id":ObjectId("23rwahd83ruieajf93rea")})
这样就可以畅通无阻的查询了,想怎么查就怎么查。
这是在存数据时需要注意的,在取数据进行应用的时候也需要注意这个坑,通常是对取出的数据立马对_id进行str()转一下,或者直接不要_id项
res=mongo_db.student.find_one({"name":"小强"},{"_id":0})
查询数据时,对于你不想获取和展示的数据,可以在查询条件后指定忽略的字段状态表示为0,这样查询出来的结果就会自动帮你去掉你不想要的数据对,逗号隔开的各个条件之间是与的关系