mongodb cursor id not valid error是一个超时错误

当使用for  c  in  col.find()时,数据库会一次性返回很多数据,如果处理这些数据的时间超过10分钟,一直没有像数据库获取后续数据,则会出现上述错误。

 

解决方案:

取消timeout限制,在结束遍历后close()游标。



cursor = coll.find(timeout=False)
for c in cursor:
...
...
cursor.close()


 

 

其他方案:

上面那个方案是我使用后成功的。还有几种方案,我尝试了一下,无效,不知道为什么。

解决方案2:

用batch_size()限制一次获取的数据量



for c in col.find().batch_size(20):
...


 

解决方案3:

用no_cursor_timeout参数去掉时间限制。注意后面要close()游标。



cursor=db.images.find(no_cursor_timeout=True)
for i in cursor:
.....
.....
cursor.close()