簡體   English   中英

Pymongo 查詢 cursor

[英]Pymongo query on a cursor

我有一個大型集合(7300 萬個條目),我想對其進行操作。 首先,我想查詢約 98% 的數據,然后對最后 2% 進行更大的操作。 首先我做

query_cursor = collection.find({'score': {'$gt': threshold}}) 

它返回查詢的 cursor。 將其寫入列表並在列表上執行操作比我可以選擇使用 fx 重新查詢此 cursor 時慢得多

query_cursor.find({'filename': 'abc'})

但是,因為我需要對其進行多次操作,所以不斷地做是不可行的

query_cursor = collection.find({'score': {'$gt': threshold}, 'filename': 'abc'}) 

那么有沒有辦法查詢到 cursor?

cursor 不存儲文檔。 它本質上是指向服務器上結果集的指針。 驅動程序一次檢索一批文檔,並在獲取下一批之前將每個批次轉發給應用程序。

驅動程序或服務器中也沒有工具可以倒帶 cursor(或跳過)。 必須按順序檢索文檔。

因此,在 cursor 上唯一支持的操作是按順序讀取結果集中的所有文檔,一次。

如果要對數據執行多次傳遞,則需要將其存儲在應用程序中或發出多個查詢(或讓單個查詢產生您需要的所有數據)。

您也許可以找到一個庫來過濾申請過程中的結果。 例如,Mongoid 使用嵌入式匹配來做到這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM