3

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

如果读取操作正在访问集合中的大部分文档,并且它可能会与其他更新操作交错。

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

如何确保光标避免重复?

4

1 回答 1

4

distinct 方法在这里不会有太大帮助。这不是该函数可以解决的问题,不仅如此,它的速度只是普通光标的一小部分。

如果读取操作正在访问集合中的大部分文档,并且它可能会与其他更新操作交错。

如果文档以这样的方式移动,则有可能使用光标类型再次读取它们。

这是否是一个问题取决于,例如,如果您正在按不会更新的内容进行排序_id,那么您真的不需要担心,但是,如果您正在按将被更新并且可能会发生变化的内容进行排序好的; 你会有问题。

解决此问题的一种方法是查看_id游标迭代中的最后一个,将游标填充到数组或其他东西中的 1000 批中。在您拥有该_id批次中的最后一个之后,您将获得大于该范围的所有内容_id

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

于 2013-03-06T09:28:56.383 回答