【发布时间】:2013-05-07 13:54:35
【问题描述】:
目前我正在尝试了解如何在 mongodb 中正确实现 CAS 操作以支持乐观锁定。我发现mongodb 中的更新是原子的,但我不确定这意味着什么(只有文档重写是原子的或所有更新周期,包括搜索相应的文档及其重写,是原子的?)。让我们考虑以下示例。
- 某些文档存在于某个集合中,其
_id值设置为 123,属性cas_val设置为 10。 - 第一个客户端想要将文档的
cas_val更新为_id等于123 到11。 - 第二个客户端想要将文档的
cas_val更新为_id等于123 到11。 - 两个客户端同时操作,操作可以交错。
那么,如果没有对带有_id 123 的文档执行其他更新,both 操作是否可能成功?
附: mongodb 中是否有一些针对乐观锁定场景的内置技术?
【问题讨论】:
-
单独使用 $inc 将不允许您实现乐观锁定,因为您可能会更改其他字段。
标签: mongodb