可以锁定让休息查询隔离?

时间:2013-12-05 06:04:57

标签: mongodb locking isolation

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的工作方式是这样的吗?

1 个答案:

答案 0 :(得分:2)

在MongoDB中,没有保证查询隔离 - 事实上,在多个文档中,您无法保证在同一时间点查看。

你所描述的内容绝对可以发生,而且确实如此。对于批量获取大量文档的多文档查询(使用游标时)也是如此。当您为下一批次发出getmore时,不保证数据的状态与您获得上一批结果时的状态相同。