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,这样查询出来的结果就会自动帮你去掉你不想要的数据对,逗号隔开的各个条件之间是与的关系

 

posted @ 2018-08-24 20:33  JasonJi  阅读(753)  评论(0编辑  收藏  举报