我尝试为MongoDB尝试一个新项目。从来没有使用它。 manual on cursors说:
因为光标在其生命周期内没有被隔离,所以干预 对文档执行写操作可能会导致返回a的游标 如果该文件已更改,则不止一次记录。处理这个问题 情况,请参阅有关快照模式的信息。
这意味着我总是必须在读取和/或 $ isolated 上使用快照()并编写操作以确保一致的结果集,或者换句话说,应用某种交易。它是否正确?或者为什么我不应该使用 snapshot(),因为不使用它将始终获得不存在的数据存在风险?
答案 0 :(得分:1)
在修改snapshot()
本身的结果时应该使用cursor
:迭代cursor
并在迭代时修改文档或者如果要调用预期的集合在调用和游标本身的迭代之间进行修改。
如果您的光标结果大于1mb,因为您应该考虑使用snapshot
。 queries that have a result set of less than 1 megabyte are snapshot from default
请注意,如果您使用snapshot
sharded collection