在 MongoDB 中,对集合的读取操作返回游标。
如果读取操作正在访问集合中的大部分文档,并且它可能会与其他更新操作交错。
在这种情况下,光标可能会有重复的文档吗?
如何确保光标避免重复?
在 MongoDB 中,对集合的读取操作返回游标。
如果读取操作正在访问集合中的大部分文档,并且它可能会与其他更新操作交错。
在这种情况下,光标可能会有重复的文档吗?
如何确保光标避免重复?
distinct 方法在这里不会有太大帮助。这不是该函数可以解决的问题,不仅如此,它的速度只是普通光标的一小部分。
如果读取操作正在访问集合中的大部分文档,并且它可能会与其他更新操作交错。
如果文档以这样的方式移动,则有可能使用光标类型再次读取它们。
这是否是一个问题取决于,例如,如果您正在按不会更新的内容进行排序_id
,那么您真的不需要担心,但是,如果您正在按将被更新并且可能会发生变化的内容进行排序好的; 你会有问题。
解决此问题的一种方法是查看_id
游标迭代中的最后一个,将游标填充到数组或其他东西中的 1000 批中。在您拥有该_id
批次中的最后一个之后,您将获得大于该范围的所有内容_id
。
另一种方法是进行快照查询:http ://docs.mongodb.org/manual/reference/operator/snapshot/但是这个函数有很多限制,例如它不能与分片集合一起使用。