如何使用 Driver 在 MongoDB 中进行文档版本控制

How to do a document versioning in MongoDB using Driver

在应用程序上编辑时需要在 MongoDB 中进行 document 版本控制。

我有很多不同用户创建的“卡片”。可以随时编辑卡片。该应用程序必须保留数据库中的所有更改,以便管理员可以回滚到旧更改。

为了做到这一点,我尝试复制和现有的 document 代表一张卡,用不同的 _id 重新插入它,这将被视为版本 0。然后用最新的更改更新复制的.这是我希望 db 持有相同 document 的版本 1、2、3。我说相同的文档是因为我将第一个文档的 _id 复制为“source_id”以便稍后累积结果。

MongoDB.DriverVB.Net

结合使用

虽然这没有奏效,但这是正确的做法吗?

问题:FindOneAndUpdate returns 更新后 document 我丢失了初始数据。

看过 here 如何复制文档,但这对我不起作用。看到很多地方都提到了upsert,但下面的对我也不起作用。

解决方法:

在编辑现有卡片时,创建一个新的增量版本。所以使用 InsertOne 方法。找到现有的卡片,更改某些字段,使卡片在插入前成为最新的。使用允许卡片与其他卡片不同的文件。让我们的用户“状态”,可以是“已发布”/“草稿”/“拒绝”。现在在这种情况下,更改“状态”字段(从“已发布”到“草稿”)并增加“版本”字段。无需使用“FindOneAndUpdate”,因为这会使初始数据丢失。

这样在数据库中会有相同的卡详细信息,第一张卡的 ID 作为不同版本的资源 ID。