Mongodb游标不一致的行为

时间:2013-05-09 18:37:29

标签: java mongodb

我有一个拥有超过十亿份文件的藏品。当我用光标迭代它们并进行一些处理时,我没有得到所有的文档。但是,如果我只是迭代收集和计数,它确实会返回正确的计数。

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

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

1 个答案:

答案 0 :(得分:0)

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