Python pymongo模塊用法示例
本文實(shí)例講述了Python pymongo模塊用法。分享給大家供大家參考,具體如下:
MongoDB優(yōu)點(diǎn)
MongoDB是一個(gè)為當(dāng)代web應(yīng)用而生的noSQL數(shù)據(jù)庫(kù),它有如下優(yōu)點(diǎn):
1、文檔型存儲(chǔ)??梢园殃P(guān)系型數(shù)據(jù)庫(kù)的表理解為一個(gè)電子表格,列表示字段,每行的記錄其實(shí)是按照列的字段順序排列的值得元組。而存儲(chǔ)在MongoDB中的文檔被存儲(chǔ)為鍵-值對(duì)的形式,值卻可以是任意類型且可以嵌套。之前在用關(guān)系型數(shù)據(jù)庫(kù)的時(shí)候,我們把產(chǎn)品信息打散到不同的表中,要通過(guò)關(guān)系表或者使用join拼接成復(fù)雜的SQL語(yǔ)句的方式才能獲得需要的數(shù)據(jù)?,F(xiàn)在我們可以更多地把產(chǎn)品信息放在一起,也不需要提前預(yù)定產(chǎn)品信息的模式。多好。
2、使用高效的二進(jìn)制BSON作為數(shù)據(jù)存儲(chǔ),BSON是一個(gè)類JSON的格式,選擇BSON可以提供更快的遍歷速度,提供比JSON更多地內(nèi)置數(shù)據(jù)類型。
3、自帶高可用及分區(qū)的解決方案。
4、基于文檔的富查詢語(yǔ)言。MongoDB支持動(dòng)態(tài)查詢,支持非常多的查詢方式,并且可以對(duì)文檔中的屬性建立索引。
5、內(nèi)置聚合工具。可以通過(guò)MapReduce等方式進(jìn)行復(fù)雜的統(tǒng)計(jì)和并行計(jì)算。
6、MongoDB在3.0 之后增加了高性能,可伸縮,支持壓縮文檔級(jí)鎖的數(shù)據(jù)存儲(chǔ)引擎(WiredTiger),官方的性能測(cè)試顯示,使用新的存儲(chǔ)引擎后帶來(lái)4~7倍的性能提升哦。
安裝MongoDB的python 驅(qū)動(dòng):
pip install pymongo
下面是一些操作例子:
# coding=utf-8
import random
import pymongo
client = pymongo.MongoClient('mongodb://localhost:27017/')
client.drop_database('test') # 保證之前沒(méi)有數(shù)據(jù), 刪除名為test的數(shù)據(jù)庫(kù)
db = client.test # 使用test這個(gè)數(shù)據(jù)庫(kù)
coll = db.coll # 使用coll這個(gè)集合
# 插入單條
rs = coll.insert_one({'a': 1, 'b': 2})
object_id = rs.inserted_id
print rs.inserted_id # 打印插入的對(duì)象id
# 插入多條
rs = coll.insert_many([{'a': random.randint(1, 10), 'b': 10}
for _ in range(10)])
print rs.inserted_ids # 打印插入的對(duì)象id列表
# 查詢單條(符合的第一條)
print coll.find_one({'a': 1, 'b': 2})
# 集合當(dāng)前全部文檔數(shù)
print coll.count()
cursor = coll.find({'a': {'$lte': 1}}) # 查詢結(jié)果是一個(gè)游標(biāo)
print cursor.count() # 符合查詢的文檔數(shù)
for r in cursor:
print r, r['b'] # 打印符合查詢的文檔內(nèi)容, 以及其中b鍵的值
# 注意, 這個(gè)循環(huán)只能進(jìn)行一次. 如果想再獲得需要重新find或者使用list(cursor)把結(jié)果存起來(lái)
# 對(duì)查詢結(jié)果排序
print list(coll.find({'a': {'$lte': 1}}).sort([('b', -1)]))
# -1也可以表示為pymongo.DESCENDING
# 對(duì)查詢結(jié)果可以限制返回文檔數(shù), 控制跳過(guò)的結(jié)果數(shù)
print coll.find({'b': {'$gt': 1}}).limit(1).skip(1).next() # next相當(dāng)于find_one
# 找到后更新, 下面例子第一個(gè)參數(shù)是過(guò)濾條件, 第二個(gè)參數(shù)是要更新的操作(設(shè)置b為3, a自增長(zhǎng)1)
# upsert為True表示找不到會(huì)創(chuàng)建一個(gè),也就是get_or_create
rs = coll.find_one_and_update({'a': 1, 'b': 2},
{'$set': {'b': 3}, '$inc': {'a': 1}},
upsert=False)
print rs # 返回更新前的文檔
# 同樣的還有find_one_and_replace和find_one_and_delete
print list(coll.find({'a': 2, 'b': 3})) # 上述文檔已經(jīng)被更新為這個(gè)文檔
coll.find_one_and_update({'a': 1, 'b': 2},
{'$set': {'b': 3}, '$inc': {'a': 1}},
upsert=True) # 雖然沒(méi)有符合{'a': 1, 'b': 2}的記錄,但是會(huì)新建一個(gè)
print coll.find({'a': 2, 'b': 3}).count() # 發(fā)現(xiàn)現(xiàn)在有2條文檔記錄了
# 刪除單個(gè)文檔
coll.delete_one({'a': 2, 'b': 3})
# 一次性刪除多個(gè)文檔
rs = coll.delete_many({'a': 2, 'b': 3})
# 如果沒(méi)有符合的條目也不會(huì)提示, 但是可以通過(guò)rs.deleted_count獲得刪除的數(shù)量
print rs.deleted_count
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》、《Python數(shù)學(xué)運(yùn)算技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5單選按鈕控件QRadioButton詳細(xì)使用方法與實(shí)例
這篇文章主要介紹了python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5單選按鈕控件QRadioButton詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下2020-02-02
Sanic框架請(qǐng)求與響應(yīng)實(shí)例分析
這篇文章主要介紹了Sanic框架請(qǐng)求與響應(yīng),結(jié)合實(shí)例形式詳細(xì)分析了Sanic框架請(qǐng)求與相應(yīng)的相關(guān)參數(shù)、方法及使用技巧,需要的朋友可以參考下2018-07-07
pycharm調(diào)試時(shí)顯示圖片問(wèn)題的解決
這篇文章主要介紹了pycharm調(diào)試時(shí)顯示圖片問(wèn)題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04
Python如何將數(shù)字變成帶逗號(hào)的千分位
這篇文章主要介紹了Python如何將數(shù)字變成帶逗號(hào)的千分位,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
python中函數(shù)傳參的幾種實(shí)現(xiàn)方式
這篇文章主要介紹了python中函數(shù)傳參的幾種實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
python將Dataframe格式的數(shù)據(jù)寫入opengauss數(shù)據(jù)庫(kù)并查詢
這篇文章主要介紹了python將Dataframe格式的數(shù)據(jù)寫入opengauss數(shù)據(jù)庫(kù)并查詢,文章介紹詳細(xì)具有一定的參考價(jià)值,希望對(duì)你的學(xué)習(xí)有所幫助2022-04-04
matplotlib實(shí)現(xiàn)熱成像圖colorbar和極坐標(biāo)圖的方法
今天小編就為大家分享一篇matplotlib實(shí)現(xiàn)熱成像圖colorbar和極坐標(biāo)圖的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12

