如何避免在内存中汇集数据。在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中这样做,一切都还可以。
答案 0 :(得分:0)
你知道这是否可能吗?如果c.db.media.find()返回所有内容而不是迭代器,我不确定你能做多少。
答案 1 :(得分:0)
查看cursor的block_size方法。有了它,你应该能够预先设定你读了多少。我说应该,因为我现在面临一些问题(Getting StopIteration exception on next(cursor) when modifying batch_size in pymongo),但我可能犯了一些错误。 block_size应该可以解决你的问题。