在MongoDB中,对集合的读操作返回游标。
如果读取操作正在访问集合中的大多数文档,则可能与其他更新操作交错。
在这种情况下,光标是否可能有重复的文档?
如何确保光标避免重复?
答案 0 :(得分:3)
这种独特的方法在这里没有多大帮助。这不是函数可以解决的问题,不仅如此,它只是正常光标速度的一小部分。
如果读取操作正在访问集合中的大多数文档,则可能与其他更新操作交错。
如果文件以这样的方式移动,即可以通过光标的类型再次读取它们。
这是否是一个问题取决于,如果你按照不会更新的东西排序,例如_id
,那么你真的不必担心,但是,如果你要排序什么东西会更新,然后可以改变然后是;你会遇到问题。
解决此问题的一种方法是查看光标迭代中的最后一个_id
,将光标填充到数组中的1000个批处理中。在您批量处理该批次中的最后一个_id
之后,将所有内容都大于_id
。
另一种方法可能是进行快照查询:http://docs.mongodb.org/manual/reference/operator/snapshot/但是此功能有很多限制,例如它不能与分片集合一起使用。