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

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值