python中使用collection.find()在mongodb中查询大量数据时的问题

问题描述:

假设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中,但是转化的过程一样要耗时。

你可能感兴趣的:(mongodb,python)