Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个包含超过 10 亿个文档的集合。当我用光标遍历它们并进行一些处理时,我没有得到所有的文档。但是,如果我只是遍历集合并计数,它确实会返回正确的计数。
double c = 0; while(cursor.hasNext){ DBObject entity = entities.next(); //do something c+=1 } assert(c==446642690.0)
除非我不做任何事情并且简单地计算,否则断言失败。
您是否在处理过程中进行更新或删除?如果是这种情况,您就会遇到 mongo 游标在其生命周期内未与更新/插入隔离的问题。您可以使用快照模式部分避免这种行为,但它确实是有限的。有关此问题的更多信息,请参阅游标隔离下的mongo 文档。由于 mongo 旨在以这种方式工作,我认为您需要找到一种方法来处理这种情况。