Mongo文档讨论查询yielding locks以避免阻止其他操作。 Mongo会产生从读取到写入的锁定,从而改变读取结果吗?
说我有文档{x:1}, {x:2}, {x:2}, {x:1}
而我正在阅读find({x:2})
。假设第四个doc不在工作集中,所以Mongo页面出错,产生对update({x:1}, {x:2}, {multi: true})
的锁定,完成并将锁定返回到find
。该查找现在将包括第四个文档但省略第一个文档。 Monogo的工作方式是这样的吗?
答案 0 :(得分:2)
在MongoDB中,没有保证查询隔离 - 事实上,在多个文档中,您无法保证在同一时间点查看。
你所描述的内容绝对可以发生,而且确实如此。对于批量获取大量文档的多文档查询(使用游标时)也是如此。当您为下一批次发出getmore时,不保证数据的状态与您获得上一批结果时的状态相同。