本文實(shí)例講述了Python常見MongoDB數(shù)據(jù)庫(kù)操作。分享給大家供大家參考,具體如下:
MongoDB 是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)。由C++語(yǔ)言編寫。旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。
MongoDB 是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的。他支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bson格式,因此可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類型。Mongo最大的特點(diǎn)是他支持的查詢語(yǔ)言非常強(qiáng)大,其語(yǔ)法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z(yǔ)言,幾乎可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫(kù)單表查詢的絕大部分功能。接下來(lái)記錄一下在使用PyMongo操作MongoDB
下載pymongo庫(kù)
pip install pymongo
前置操作
# 獲取MongoDB操作,localhost為host,27017為MongoDB默認(rèn)portclient = pymongo.MongoClient("mongodb://localhost:27017/")# 操作test數(shù)據(jù)庫(kù)db = client.test# 獲取Student集合student = db.Student
插入單條數(shù)據(jù)
# 插入一條數(shù)據(jù),并獲取返回結(jié)果res = student.insert_one({"name":"老王"})# 獲取插入之后該條數(shù)據(jù)的idobject_id = res.inserted_idprint(object_id)
插入多條數(shù)據(jù)
# 插入9條數(shù)據(jù)res = student.insert_many([{"name":"name%d"%index} for index in range(1,10)])# 獲取插入之后該9條數(shù)據(jù)的ids,object_ids為一個(gè)listobject_ids = res.inserted_idsprint(object_ids)
查詢單條數(shù)據(jù)
# 查詢單條數(shù)據(jù),res為一個(gè)dictres = student.find_one({"name":"老王"})
查詢滿足條件的所有數(shù)據(jù)
# 查詢滿足條件的所有數(shù)據(jù),res為一個(gè)pymongo.cursor.Cursor對(duì)象res = student.find({"name":"老王"})# 獲取數(shù)據(jù)個(gè)數(shù)print(res.count())for index in res: # index為一個(gè)dict。注意:這個(gè)循環(huán)只能進(jìn)行一次,如需再次操作返回結(jié)果,需要在find一次,或?qū)ist(res),將這個(gè)返回結(jié)果保存起來(lái) print(index)
更新
# 查詢并更新。{"name":"老王"}為查詢條件;{"$set":{"addr":"家住隔壁"}}更新數(shù)據(jù);upsert=False找不到不插入數(shù)據(jù),upsert=True找不到則插入數(shù)據(jù)# res為返回結(jié)果,res為一個(gè)字典對(duì)象,是之前數(shù)據(jù)的字典res = student.find_one_and_update({"name":"老王"},{"$set":{"addr":"家住隔壁"}},upsert=False)
刪除單條數(shù)據(jù)
student.delete_one({"name":"老王"})
刪除匹配條件的所有數(shù)據(jù)
student.delete_many({"name":"老王"})
附:更多MongoDB的操作
MongoDB 是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)。由C++語(yǔ)言編寫。旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。
MongoDB 是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的。他支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bson格式,因此可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類型。Mongo最大的特點(diǎn)是他支持的查詢語(yǔ)言非常強(qiáng)大,其語(yǔ)法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z(yǔ)言,幾乎可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫(kù)單表查詢的絕大部分功能。接下來(lái)記錄一下在終端怎么使用MongoDB:
新聞熱點(diǎn)
疑難解答
圖片精選