如何在MongoDB中锁定集合

时间:2014-01-23 09:05:22

标签: mongodb

我的数据库中有一个集合

1.我想在用户更新文档时锁定我的收藏

2.为其他用户更新集合时,没有任何操作完成期望读取

请提供有关如何在MongoDB中锁定集合的建议

最好的问候

GSY

3 个答案:

答案 0 :(得分:3)

MongoDB已经实现了编写器贪婪的数据库级锁定。

这意味着当写入特定文档时:

  • User集合将被锁定
  • 在写入数据之前无法读取

没有可用的读取的原因是因为MongoDB在写入时不能进行一致的读取(使用物理学,再次获胜)。

值得注意的是,如果你想要一个更复杂的锁,跨越多行,那么这在MongoDB中是不可用的,并且没有真正的方法来实现这样的东西。

答案 1 :(得分:1)

MongoDB锁定已经为您做到了。请参阅what operations acquire which lockwhat does each lock mean

答案 2 :(得分:0)

请参阅write operations上的MongoDB文档,特别注意本节:

  

隔离写操作

     

单个文档的修改始终是原子的,即使写入操作修改了该文档中的多个子文档。对于修改多个>文档的写操作,整个操作不是原子操作,其他操作可能是交错的。

     

没有其他操作是原子的。但是,您可以尝试使用隔离运算符隔离>影响多个文档的写入操作。

     

要将一系列写操作与其他读写操作隔离,请参阅执行>两阶段提交。