我有一个拥有超过十亿份文件的藏品。当我用光标迭代它们并进行一些处理时,我没有得到所有的文档。但是,如果我只是迭代收集和计数,它确实会返回正确的计数。
double c = 0;
while(cursor.hasNext){
DBObject entity = entities.next();
//do something
c+=1
}
assert(c==446642690.0)
断言失败,除非我不做任何事情并简单地计算。
答案 0 :(得分:0)
您是否在处理期间进行更新或删除?如果是这种情况,您遇到的问题是mongo游标在其生命周期内未与更新/插入隔离。您可以使用snapshot mode部分避免这种行为,但它确实有限。有关此问题的详细信息,请参阅光标隔离下的mongo documentation。由于mongo旨在以这种方式工作,我认为你需要找到一种方法来处理这种情况。