我有一个超过10亿个文档的集合。当我用游标遍历它们并进行一些处理时,我并没有得到所有的文档。但是,如果我只是遍历集合并计数,它确实返回正确的计数。
double c = 0;
while(cursor.hasNext){
DBObject entity = entities.next();
//do something
c+=1
}
assert(c==446642690.0)
断言失败,除非我什么都不做,只是计数。
是否在处理过程中进行更新或删除?如果是这种情况,您就会遇到mongo游标在其生命周期内没有与更新/插入隔离的问题。你可以用快照模式部分地避免这种行为,但它真的很有限。有关此问题的详细信息,请参阅游标隔离下的mongo文档。由于mongo就是这样设计的,我认为你需要找到一种方法来处理这种情况。