如何避免在内存中汇总数据。当迭代光标物体中的pymongo中?

例子:

def iter():
    c=pymongo.Connection()
    cursor=c.db.media.find().skip(0).limit(50000)
    for item in cursor:
        yield item

在循环之前 for 大约有2个减。由于某种原因,它在开始迭代之前将所有数据加载到内存中。我可以以某种方式避免吗?

如果我在mongodb shell中这样做,一切正常。

有帮助吗?

解决方案

你知道这是否可能吗?如果c.db.media.find()返回所有内容而不是迭代器,我不确定您能做很多事情。

其他提示

查看光标的block_size方法。使用它,您应该能够设置提前阅读的数量。我说应该,因为我现在面临一些问题(在pymongo中修改batch_size时,在下一步(光标)中获取停止异常),但是我可能犯了一些错误。 block_size应该解决您的问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top