Mongodb游标不一致的行为



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

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

断言失败,除非我什么都不做,只是计数。

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

最新更新