【发布时间】:2011-10-16 06:04:39
【问题描述】:
我刚开始使用 Mongo,我想知道:在 Mongo 中处理竞争条件的最佳方法是什么?
例如,如果我有一个名为 version 的字段设置为 1 的文档,并且用户 A 将其更新到版本 2,当用户 B 尝试从版本 1(用户 B 收到的版本)更新它时,它应该通知用户 B 表示记录已更新。
一种解决方案是使用findAndModify,使用版本字段作为查询条件。
例如:
db.things.findAndModify({query: { version: "1"}, update: { $set: {Title: "New Title"}}})
然而,这里的问题是如果版本已经增加了,这将返回null。问题是这与已删除的记录无法区分,因此必须使用第二个查询来检查文档是否仍然存在以确认它只是已更新的版本。
所以这是我天真的方法。我想知道:在 Mongo 中是否有更合适的模式来提高效率?
【问题讨论】:
标签: concurrency mongodb