问题描述:
假设collection中有2000条数据,执行如下代码:
i=1
for content in collection.find():
print i++
打印到101时,打印停止,等待若干秒后继续打印完全。
分析:
mongodb的find()方法返回游标cursor,这里有一个限制,默认包含101个文档。官方文档。
解决方案:
1.设置batch size:
i=1
for content in collection.find().batch_size(500):
print i++
不建议设太大,设置太大的话,会在打印之前话费大量时间读取cursor。所以建议设置适量的值,读取一些cursor,打印一些数据。
2.将cursor转化为list:
result = collection.find()
result_list = list(result[:])
i=1
for document in result_list
print i++
python不像php有toArray()方法将结果集转化为数组一次性读取,可以转化成列表 , 将数据放在RAM中,但是转化的过程一样要耗时。