最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PyMongo 查詢數(shù)據(jù)的實(shí)現(xiàn)

 更新時(shí)間:2021年06月28日 10:18:57   作者:銳玩道  
本文主要介紹了PyMongo 查詢數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

查詢數(shù)據(jù)

往 mongodb存儲(chǔ)的所有數(shù)據(jù),都是為了需要讀取的時(shí)候能夠取出。
但讀取除了按某一列比如分?jǐn)?shù): 排序 讀??;還會(huì)出現(xiàn)我只看某一段時(shí)間、某個(gè)班的條件篩選;還會(huì)出現(xiàn)我想看每個(gè)班平均分 聚合 求平均....等等多樣操作
這些操作都可以通過(guò) find_one()、find() 完成:

ret2find = collect.find_one()
# {'_id': ObjectId('5ea780bf747e3e128470e485'), 'class_name': '高三(1)班', 'student_name': '張三', 'subject': '英語(yǔ)', 'score': 100, 'date': '20200301'}

ret2find = collect.find()
# <pymongo.cursor.Cursor object at 0x0000024BBEBE15C8>

從上面的結(jié)果可以看出,find_one() 查詢得出單一字典;find()則是一個(gè)生成器對(duì)象能夠通過(guò) for val in ret2find: 遍歷取出

設(shè)置查詢條件

但能取出全部數(shù)據(jù)還不夠,查詢一般是會(huì)帶條件、甚至復(fù)雜的條件 —— 比如:查詢出 高三(1)班,張三 或 李四,成績(jī)大于90 的科目,該怎么做呢?

ret2find = collect.find({"class_name":"高三(1)班","score":{"$gt":90},"$or":[{"student_name":"張三"},{"student_name":"李四"}]})

for val in ret2find:
    print(val)

上面有兩個(gè)要點(diǎn):

{"class_name":"高三(1)班","score":{"$gt":90}}

這一段 寫法 表示 “高三(1)班 且 分?jǐn)?shù) > 90”;
而 $gt 比較操作符,表 大于意思,除 $gt 操作符以外還有:

符號(hào) 含義
$lt 小于
$lte 小于等于
$gt 大于
$gte 大于等于
$ne 不等于
$in 在范圍內(nèi)
$nin 不在范圍內(nèi)

{"$or":[{"student_name":"張三"},{"student_name":"李四"}]}

這一段 寫法 表示 “學(xué)生名稱為 張三 或 李四”
而其中的 $or 邏輯操作符,用它來(lái)表示條件之間的關(guān)系。除了 $or 以外的邏輯操作符還有:

符號(hào) 含義
$and 按條件取 交集
$not 單個(gè)條件的 相反集合
$nor 多個(gè)條件的 相反集合
$or 多個(gè)條件的 并集

更多查詢操作

除了上述常規(guī)操作外,具體使用場(chǎng)景中我們還會(huì)用到:

符號(hào) 含義 示例 示例含義
$regex 正則匹配 {"student_name":{"regex":".∗三"}} 學(xué)生名以 “三” 結(jié)尾
$expr 允許查詢中使用 聚合表達(dá)式 {"expr":{"gt":["spent","budget"]}} 查詢 花費(fèi) 大于 預(yù)算 的超支記錄
$exists 屬性是否存在 {"date":{"$exists": True}} date屬性存在
$exists 屬性是否存在 {"date":{"$exists": True}} date屬性存在
$type 類型判斷 {"score":{"$type":"int"}} score的類型為int
$mod 取模操作 {'score': {'$mod': [5, 0]}} 分?jǐn)?shù)取5、0的模

更多 查詢操作符 可以點(diǎn)擊 查看官方文檔

PS:pymongo最大查詢限制

在用pyhton遍歷mongo數(shù)據(jù)中時(shí)候,發(fā)限查詢到101行就會(huì)阻塞,如下

    lista_a = []
    for info in db.get_collection("dbs").find():
        lista_a.append(info)
        print("info nums=",len(info))

'''結(jié)果顯示'''
'''info nums=101'''

分析原因:mongodb的find()方法返回游標(biāo)cursor,可能有一個(gè)限制閾值101,參考文檔,如下

原文:

The MongoDB server returns the query results in batches. The amount of data in the batch will not exceed the maximum BSON document size. To override the default size of the batch, see batchSize() and limit().

New in version 3.4: Operations of type find(), aggregate(), listIndexes, and listCollections return a maximum of 16 megabytes per batch. batchSize() can enforce a smaller limit, but not a larger one.

find() and aggregate() operations have an initial batch size of 101 documents by default. Subsequent getMore operations issued against the resulting cursor have no default batch size, so they are limited only by the 16 megabyte message size.

For queries that include a sort operation without an index, the server must load all the documents in memory to perform the sort before returning any results.

翻譯:

MongoDB服務(wù)器批量返回查詢結(jié)果。批處理中的數(shù)據(jù)量不會(huì)超過(guò)最大BSON文檔大小。要覆蓋批處理的默認(rèn)大小,請(qǐng)參見batchSize()和limit()。
新版本3.4:類型為find()、aggregate()、listIndexes和listCollections的操作每批最多返回16兆字節(jié)。batchSize()可以執(zhí)行較小的限制,但不能執(zhí)行較大的限制。
find()和aggregate()操作的初始批處理大小默認(rèn)為101個(gè)文檔。針對(duì)生成的游標(biāo)發(fā)出的后續(xù)getMore操作沒(méi)有默認(rèn)的批處理大小,因此它們僅受16mb消息大小的限制。 對(duì)于包含沒(méi)有索引的排序操作的查詢,服務(wù)器必須在返回任何結(jié)果之前加載內(nèi)存中的所有文檔來(lái)執(zhí)行排序。

解決方案

    lista_a = []
    for info in db.get_collection("dbs").find().batch_size1(5000): #修改最大限制閾
        lista_a.append(info)
        print("info nums=",len(info))

但是這種方法是每次游標(biāo)返回5000條數(shù)據(jù),循環(huán)遍歷,如果單詞查找50000次應(yīng)該怎么寫呢?如下

   lista_a = []
   cousor=db.get_collection("dbs").find().batch_size1(5000)
    for i in range(50000): #修改最大限制閾
        lista_a.append(next(cousor))

到此這篇關(guān)于PyMongo 查詢數(shù)據(jù)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)PyMongo 查詢數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在win和Linux系統(tǒng)中python命令行運(yùn)行的不同

    在win和Linux系統(tǒng)中python命令行運(yùn)行的不同

    本文給大家分享的是作者在在win和Linux系統(tǒng)中python命令行運(yùn)行的不同的解決方法,有相同需求的小伙伴可以參考下
    2016-07-07
  • python中如何使用正則表達(dá)式的集合字符示例

    python中如何使用正則表達(dá)式的集合字符示例

    我們都知道,正則表達(dá)式可以很方便地對(duì)字符串進(jìn)行匹配、查找、分割等操作,下面這篇文章主要給大家介紹了關(guān)于python中如何使用正則表達(dá)式的集合字符的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2017-10-10
  • Django中Cookie搭配Session使用實(shí)踐

    Django中Cookie搭配Session使用實(shí)踐

    session和cookie功能差不多,同樣是用來(lái)記錄用戶信息和維持會(huì)話狀態(tài)的,但是session是依賴cookie的,本文主要介紹了Django中Cookie搭配Session使用實(shí)踐,感興趣的可以了解一下
    2021-09-09
  • 基于Python繪制3D立體愛心圖案的示例詳解

    基于Python繪制3D立體愛心圖案的示例詳解

    這篇文章主要為大家詳細(xì)介紹了利用Python實(shí)現(xiàn)繪制3D立體愛心圖案的四種不同方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以動(dòng)手嘗試一下
    2022-11-11
  • Django 通過(guò)JS實(shí)現(xiàn)ajax過(guò)程詳解

    Django 通過(guò)JS實(shí)現(xiàn)ajax過(guò)程詳解

    這篇文章主要介紹了Django 通過(guò)JS實(shí)現(xiàn)ajax過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Using Django with GAE Python 后臺(tái)抓取多個(gè)網(wǎng)站的頁(yè)面全文

    Using Django with GAE Python 后臺(tái)抓取多個(gè)網(wǎng)站的頁(yè)面全文

    這篇文章主要介紹了Using Django with GAE Python 后臺(tái)抓取多個(gè)網(wǎng)站的頁(yè)面全文,需要的朋友可以參考下
    2016-02-02
  • Python黑魔法庫(kù)安裝及操作字典示例詳解

    Python黑魔法庫(kù)安裝及操作字典示例詳解

    這篇文章主要為大家介紹了Python中黑魔法庫(kù)的安裝及操作字典的示例詳解,有需要的 朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-10-10
  • 用python打開攝像頭并把圖像傳回qq郵箱(Pyinstaller打包)

    用python打開攝像頭并把圖像傳回qq郵箱(Pyinstaller打包)

    這篇文章主要介紹了用python打開攝像頭并把圖像傳回qq郵箱,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • 在django-xadmin中APScheduler的啟動(dòng)初始化實(shí)例

    在django-xadmin中APScheduler的啟動(dòng)初始化實(shí)例

    今天小編就為大家分享一篇在django-xadmin中APScheduler的啟動(dòng)初始化實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • 使用pandas 將DataFrame轉(zhuǎn)化成dict

    使用pandas 將DataFrame轉(zhuǎn)化成dict

    今天小編就為大家分享一篇使用pandas 將DataFrame轉(zhuǎn)化成dict,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12

最新評(píng)論

晴隆县| 中山市| 甘德县| 天津市| 永宁县| 北票市| 峨眉山市| 长顺县| 金门县| 潮安县| 保康县| 阳泉市| 大庆市| 无棣县| 清丰县| 洞口县| 罗定市| 高要市| 鸡东县| 乌拉特后旗| 阜南县| 进贤县| 登封市| 东乌| 清水县| 云安县| 达拉特旗| 佛学| 涟源市| 卓资县| 安岳县| 庐江县| 梁河县| 洪江市| 新疆| 烟台市| 西贡区| 临邑县| 阳东县| 锡林郭勒盟| 鸡西市|