【发布时间】:2015-04-09 06:33:54
【问题描述】:
我有这些操作:
- 从集合中查找文档。
- 根据当前值操作 doc.prop,其中“prop”是一个字符串。
- 将文档更新回集合。
所以在这种情况下,我必须确保这些操作是原子的,因为更新 doc.prop 必须基于当前值。
这里有两种方法: 1.在doc中添加“valueKey”(Number)属性,更新doc时确保valueKey匹配。更新后增加 valueKey。如果 valueKey 不匹配,则将此更新标记为失败并重试。 2.在操作过程中,使用MongoDB提供的“fsyncLock”锁定整个mongod实例。
我上面提到的第一种方法很好,但是当同时面对大量这些操作时,“失败”和“重试”会很频繁。
第二种方法,我没有尝试过,我认为它是用于备份数据库的,在这种情况下并不好。
所以我想知道还有其他有效的方法吗?
【问题讨论】:
标签: mongodb locking atomic consistency