需要使用aggregate()返回游标而不是command_cursor

时间:2017-07-06 14:42:06

标签: mongodb cursor aggregation-framework pymongo

我需要迭代一次aggregate()结果两次。但是,不可能倒回aggregate()返回的command_cursor。我试图将聚合()的选项UseCursor转为True,但它总是返回一个command_cursor。有办法做我想做的事吗?

主要问题是我无法将aggregate()返回的所有文件存储在列表中...它会导致我的应用程序崩溃并在~127000个文档后冻结我的VM

1 个答案:

答案 0 :(得分:0)

简单地执行aggregate两次:

pipeline = [...]
for doc in collection.aggregate(pipeline):
    # do step 1 with your documents

for doc in collection.aggregate(pipeline):
    # do step 2 with your documents

事实上,这是普通Cursor实际上做的rewind:它只是执行两次相同的查询。