0

我有一个包含超过 10 亿个文档的集合。当我用光标遍历它们并进行一些处理时,我没有得到所有的文档。但是,如果我只是遍历集合并计数,它确实会返回正确的计数。

double c = 0;
while(cursor.hasNext){
      DBObject entity = entities.next();
      //do something
      c+=1
    }
 assert(c==446642690.0)

除非我不做任何事情并且简单地计算,否则断言失败。

4

1 回答 1

0

您是否在处理过程中进行更新或删除?如果是这种情况,您就会遇到 mongo 游标在其生命周期内未与更新/插入隔离的问题。您可以使用快照模式部分避免这种行为,但它确实是有限的。有关此问题的更多信息,请参阅游标隔离下的mongo 文档。由于 mongo 旨在以这种方式工作,我认为您需要找到一种方法来处理这种情况。

于 2013-05-09T21:25:41.720 回答