迭代mongodb游标时获取文档列表

时间:2014-08-29 09:09:02

标签: mongodb pymongo

是否可以在迭代mongodb游标时检索文档列表?我的意思是:

for item in collection.find():
    # do stuff with the document

项目只是一个文档,但我可以以某种方式检索列表并继续迭代光标吗? (因为collection.find()[:2]返回一个列表,但你没有保持光标)。我知道我可以使用一些计数器来做到这一点,但它有一个语法糖吗?

看起来游标可以像列表一样压缩:

for item1, item2 in zip(collection.find(), collection.find({'_id': {'$gt': 0}})):
    print((item1, item2))

编辑: 在this solution中,它显示您可以将整个集合作为列表(如果它适合RAM)并迭代它。这符合我的用例,但如果它不适合RAM呢?

1 个答案:

答案 0 :(得分:0)

您可以在this question的答案中使用任何滚动窗口生成器,并将其应用于游标。 E.g。

cursor = collection.find()
for doc1, doc2 in window(cursor, n=2):
    print(doc1, doc2)

或者

for doc1, doc2, doc3 in window(cursor, n=3):
    print(doc1, doc2, doc3)