在 mongodb 中进行行版本控制的合理方法是什么。Sql server 有一个 rowversion 字段,当根据数据库中跟踪的相对时间 sql server 更新行时,该字段会自动递增。想知道 mongo 中的一个好的方案会是什么样子吗?
问问题
1059 次
1 回答
1
MongoDB 中没有对行版本控制的内置支持,例如您提到的 SQL 服务器。
但是,您始终可以在文档中添加版本字段。然后,每当您想更新文档时,您将使用findAndModify命令以原子方式执行此操作。每个这样的原子更新还必须增加文档版本号。例如,假设集合foo
包含文档{ "_id" : "example", "a" : 3, "version" : 1 }
。以下以原子方式将a
field 设置为 9 并使用 mongo shell 递增版本号:
db.foo.findAndModify({
query: {_id: "example"},
update: {$set: {a: 9}, $inc: {version: 1}}
});
默认情况下,返回的文档是应用更新之前的文档状态。要返回文档的修改版本,请添加new: true
到查询中。
请注意,如果您不需要修改后的文档的副本,那么您可以简单地使用 update 而不是 findAndModify(即 findAndModify 适合在一个原子步骤中更新和返回文档,否则 update 也一样好)。
于 2013-09-19T20:53:58.807 回答