MongoDB中的行版本或文档版本

本文关键字:版本 文档 MongoDB | 更新日期: 2023-09-27 18:31:05

在 mongodb 中进行行版本控制的合理方法是什么?SQL Server 有一个行版本字段,当根据数据库中跟踪的相对时间 SQL Server 更新行时,该字段会自动递增。想知道在 mongo 中为同样的事情制定一个好的方案会是什么样子吗?

MongoDB中的行版本或文档版本

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 适用于在一个原子步骤中更新和返回文档,否则 update 也一样好)。