Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2344797
  • 博文数量: 276
  • 博客积分: 5998
  • 博客等级: 大校
  • 技术积分: 5175
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-24 14:43
文章分类

全部博文(276)

文章存档

2014年(25)

2013年(11)

2012年(69)

2011年(167)

2010年(4)

分类: NOSQL

2014-03-24 21:50:10


db.collection.find() 的时候,它返回的不是所有的数据,实际上是一个“cursor”。它的默认行为是:第一次向数
据库查询 101 个文档,或 1 MB 的文档,取决于哪个条件先满足;之后每次 cursor 中的文档用尽后,查询 4 MB
的文档。另外,find() 的默认cursor超时时间是10分钟。如果一个 batch 的文档十分钟内没处理完,过后再处理
完了,再用同一个 cursor id 向服务器取下一个 batch,这时候 cursor id 已经过期了,就会报 cursor id 无效的错误。



解决方法,两种、
1、find() 时传入 timeout=False 
for document in db.collection.find(timeout=False)


2、估计一个 batch 大小, 10 分钟内能处理完。
for document in db.collection.find().batch_size(40):
阅读(5474) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~