如何确保游标不会在MongoDB中返回重复文档?

时间:2013-03-06 07:25:39

标签: mongodb

在MongoDB中,对集合的读操作返回游标。

如果读取操作正在访问集合中的大多数文档,则可能与其他更新操作交错。

在这种情况下,光标是否可能有重复的文档?

如何确保光标避免重复?

1 个答案:

答案 0 :(得分:3)

这种独特的方法在这里没有多大帮助。这不是函数可以解决的问题,不仅如此,它只是正常光标速度的一小部分。

  

如果读取操作正在访问集合中的大多数文档,则可能与其他更新操作交错。

如果文件以这样的方式移动,即可以通过光标的类型再次读取它们。

这是否是一个问题取决于,如果你按照不会更新的东西排序,例如_id,那么你真的不必担心,但是,如果你要排序什么东西会更新,然后可以改变然后是;你会遇到问题。

解决此问题的一种方法是查看光标迭代中的最后一个_id,将光标填充到数组中的1000个批处理中。在您批量处理该批次中的最后一个_id之后,将所有内容都大于_id

另一种方法可能是进行快照查询:http://docs.mongodb.org/manual/reference/operator/snapshot/但是此功能有很多限制,例如它不能与分片集合一起使用。