經過上一篇博客的閱讀學習,咱們對於MongoDB的原生數據庫操做語句已經用了大致上的掌握,那麼在咱們的程序中用什麼來幫助咱們對數據庫進行操做呢?python
沒錯!就是咱們的pymongo模塊了數據庫
pip3 install pymongo安裝json
python -m pip install pymongo 上面執行報錯的能夠試試這一條命令(前提環境變量配置對應了)學習
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_idsui
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操做哦~~~spa
res=mongo_db.student.delete_one({"name":"石頭人"}) print(res.deleted_count)#獲取刪除的條數 print(res.acknowledged)#True 這個參數能夠用來判斷執行是否成功,返回結果是True或者False
細心的小夥伴應該對MongoDB中自動生成的_id感到一絲疑惑吧,而且你想經過_id來查詢數據的時候,會發現根本查不到,怎麼試都不行,明明字符串寫的如出一轍。code
緣由就在於數據的_id對應的是ObjectId類型,咱們單純用字符串想去匹配它是不行的blog
這個時候就須要藉助一個json的二哥bson模塊了~~~ip
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,這樣查詢出來的結果就會自動幫你去掉你不想要的數據對,逗號隔開的各個條件之間是與的關係