我的数据库中有一个集合
1.我想在用户更新文档时锁定我的收藏
2.为其他用户更新集合时,没有任何操作完成期望读取
请提供有关如何在MongoDB中锁定集合的建议
最好的问候
GSY
答案 0 :(得分:3)
MongoDB已经实现了编写器贪婪的数据库级锁定。
这意味着当写入特定文档时:
User
集合将被锁定没有可用的读取的原因是因为MongoDB在写入时不能进行一致的读取(使用物理学,再次获胜)。
值得注意的是,如果你想要一个更复杂的锁,跨越多行,那么这在MongoDB中是不可用的,并且没有真正的方法来实现这样的东西。
答案 1 :(得分:1)
MongoDB锁定已经为您做到了。请参阅what operations acquire which lock和what does each lock mean。
答案 2 :(得分:0)
请参阅write operations上的MongoDB文档,特别注意本节:
隔离写操作
单个文档的修改始终是原子的,即使写入操作修改了该文档中的多个子文档。对于修改多个>文档的写操作,整个操作不是原子操作,其他操作可能是交错的。
没有其他操作是原子的。但是,您可以尝试使用隔离运算符隔离>影响多个文档的写入操作。
要将一系列写操作与其他读写操作隔离,请参阅执行>两阶段提交。