mongodb中的rowversion或doc版本

时间:2013-09-13 00:43:14

标签: c# .net mongodb rowversion database

在mongodb中进行行版本控制的声音方法是什么? Sql server有一个rowversion字段,当一行根据数据库中跟踪的相对时间sql server更新时,该字段自动递增。想知道mongo中的一个好方案是什么样的?

1 个答案:

答案 0 :(得分:1)

对于MongoDB中的行版本控制没有内置支持,例如您提到的SQL服务器类型。

但是,您始终可以在文档中添加版本字段。然后,每当您想要更新文档时,您将使用findAndModify命令以原子方式执行此操作。每个这样的原子更新也必须增加文档版本号。例如,假设集合foo包含文档{ "_id" : "example", "a" : 3, "version" : 1 }。以下原则将a字段设置为9并使用mongo shell增加版本号:

db.foo.findAndModify({
  query: {_id: "example"},
  update: {$set: {a: 9}, $inc: {version: 1}}
});

默认情况下,返回的文档是应用更新之前的文档的状态。要返回文档的修改版本,请将new: true添加到查询中。

请注意,如果您不需要修改后的文档的副本,那么您可以简单地使用update而不是findAndModify(即findAndModify适用于在一个原子步骤中更新和返回文档,否则更新也同样好)。