1
我用MongoDB的集合,是太大,在內存中加載整個工作表的清單,我想用它使用PyMongo工作。獲取pymongo .find()返回結果爲給定大小
對於每一個項目,我不得不在另一個集合搜索和應用功能的結果。
第一種算法,我想出了是:
for document in collection1.find():
field1 = document['field']
search = collection2.find({'field': field1})
# Do some stuff with the search
但執行的每個元素搜索只需花費太多的時間,因爲它必須等待每一次服務器響應。
爲了減少等待時間,每個元素我試圖使用-say的批次,500 - 一次文件。
我發現如何做到這一點使用上的光標
cursor = collection1.find()
while cursor.alive:
batch_data = []
for i in range(500):
batch_data.append(cursor.next())
fields = [i['field'] for i in bath_data]:
search = collection2.find({'field': {"$in": fields}})
# map each result to the correct document and then do my stuff
的next()方法。然而這似乎很哈克的唯一途徑。有沒有辦法對集合執行搜索並將結果作爲給定大小的批次列表返回?
PyMongo達到pymongo文件不需要做任何事情來支持$查找,它通過你的整個聚合管道輸送到服務器,不管你指定什麼運營商。 –
謝謝,我會牢記這一點。 –