国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python pymongo模塊用法示例

2020-01-04 15:28:47
字體:
來源:轉載
供稿:網友

本文實例講述了Python pymongo模塊用法。分享給大家供大家參考,具體如下:

MongoDB優點

MongoDB是一個為當代web應用而生的noSQL數據庫,它有如下優點:

1、文檔型存儲??梢园殃P系型數據庫的表理解為一個電子表格,列表示字段,每行的記錄其實是按照列的字段順序排列的值得元組。而存儲在MongoDB中的文檔被存儲為鍵-值對的形式,值卻可以是任意類型且可以嵌套。之前在用關系型數據庫的時候,我們把產品信息打散到不同的表中,要通過關系表或者使用join拼接成復雜的SQL語句的方式才能獲得需要的數據?,F在我們可以更多地把產品信息放在一起,也不需要提前預定產品信息的模式。多好。

2、使用高效的二進制BSON作為數據存儲,BSON是一個類JSON的格式,選擇BSON可以提供更快的遍歷速度,提供比JSON更多地內置數據類型。

3、自帶高可用及分區的解決方案。

4、基于文檔的富查詢語言。MongoDB支持動態查詢,支持非常多的查詢方式,并且可以對文檔中的屬性建立索引。

5、內置聚合工具??梢酝ㄟ^MapReduce等方式進行復雜的統計和并行計算。

6、MongoDB在3.0 之后增加了高性能,可伸縮,支持壓縮文檔級鎖的數據存儲引擎(WiredTiger),官方的性能測試顯示,使用新的存儲引擎后帶來4~7倍的性能提升哦。

安裝MongoDB的python 驅動:

pip install pymongo

下面是一些操作例子:

# coding=utf-8import randomimport pymongoclient = pymongo.MongoClient('mongodb://localhost:27017/')client.drop_database('test') # 保證之前沒有數據, 刪除名為test的數據庫db = client.test # 使用test這個數據庫coll = db.coll # 使用coll這個集合# 插入單條rs = coll.insert_one({'a': 1, 'b': 2})object_id = rs.inserted_idprint rs.inserted_id # 打印插入的對象id# 插入多條rs = coll.insert_many([{'a': random.randint(1, 10), 'b': 10}            for _ in range(10)])print rs.inserted_ids # 打印插入的對象id列表# 查詢單條(符合的第一條)print coll.find_one({'a': 1, 'b': 2})# 集合當前全部文檔數print coll.count()cursor = coll.find({'a': {'$lte': 1}}) # 查詢結果是一個游標print cursor.count() # 符合查詢的文檔數for r in cursor:  print r, r['b'] # 打印符合查詢的文檔內容, 以及其中b鍵的值# 注意, 這個循環只能進行一次. 如果想再獲得需要重新find或者使用list(cursor)把結果存起來# 對查詢結果排序print list(coll.find({'a': {'$lte': 1}}).sort([('b', -1)]))# -1也可以表示為pymongo.DESCENDING# 對查詢結果可以限制返回文檔數, 控制跳過的結果數print coll.find({'b': {'$gt': 1}}).limit(1).skip(1).next() # next相當于find_one# 找到后更新, 下面例子第一個參數是過濾條件, 第二個參數是要更新的操作(設置b為3, a自增長1)# upsert為True表示找不到會創建一個,也就是get_or_creaters = 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_deleteprint list(coll.find({'a': 2, 'b': 3})) # 上述文檔已經被更新為這個文檔coll.find_one_and_update({'a': 1, 'b': 2},             {'$set': {'b': 3}, '$inc': {'a': 1}},             upsert=True) # 雖然沒有符合{'a': 1, 'b': 2}的記錄,但是會新建一個print coll.find({'a': 2, 'b': 3}).count() # 發現現在有2條文檔記錄了# 刪除單個文檔coll.delete_one({'a': 2, 'b': 3})# 一次性刪除多個文檔rs = coll.delete_many({'a': 2, 'b': 3})# 如果沒有符合的條目也不會提示, 但是可以通過rs.deleted_count獲得刪除的數量print rs.deleted_count

希望本文所述對大家Python程序設計有所幫助。


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平塘县| 兰考县| 响水县| 甘南县| 广丰县| 临猗县| 山阳县| 南城县| 安宁市| 南和县| 乌兰察布市| 东阳市| 延川县| 新安县| 启东市| 定南县| 方城县| 汤阴县| 顺义区| 若羌县| 甘孜| 康定县| 綦江县| 慈利县| 乐清市| 包头市| 那坡县| 天镇县| 金塔县| 涞源县| 凉山| 云南省| 中山市| 新巴尔虎左旗| 临汾市| 息烽县| 突泉县| 松潘县| 文山县| 安平县| 旌德县|