如何避免在内存中汇总数据。当迭代光标物体中的pymongo中?
题
如何避免在内存中汇总数据。当迭代光标物体中的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应该解决您的问题。
不隶属于 StackOverflow