如何使用 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.Driver
与 VB.Net
结合使用
虽然这没有奏效,但这是正确的做法吗?
问题:FindOneAndUpdate
returns 更新后 document
我丢失了初始数据。
看过 here 如何复制文档,但这对我不起作用。看到很多地方都提到了upsert
,但下面的对我也不起作用。
解决方法:
在编辑现有卡片时,创建一个新的增量版本。所以使用 InsertOne
方法。找到现有的卡片,更改某些字段,使卡片在插入前成为最新的。使用允许卡片与其他卡片不同的文件。让我们的用户“状态”,可以是“已发布”/“草稿”/“拒绝”。现在在这种情况下,更改“状态”字段(从“已发布”到“草稿”)并增加“版本”字段。无需使用“FindOneAndUpdate”,因为这会使初始数据丢失。
这样在数据库中会有相同的卡详细信息,第一张卡的 ID 作为不同版本的资源 ID。
在应用程序上编辑时需要在 MongoDB
中进行 document
版本控制。
我有很多不同用户创建的“卡片”。可以随时编辑卡片。该应用程序必须保留数据库中的所有更改,以便管理员可以回滚到旧更改。
为了做到这一点,我尝试复制和现有的 document
代表一张卡,用不同的 _id
重新插入它,这将被视为版本 0。然后用最新的更改更新复制的.这是我希望 db 持有相同 document
的版本 1、2、3。我说相同的文档是因为我将第一个文档的 _id 复制为“source_id”以便稍后累积结果。
将 MongoDB.Driver
与 VB.Net
虽然这没有奏效,但这是正确的做法吗?
问题:FindOneAndUpdate
returns 更新后 document
我丢失了初始数据。
看过 here 如何复制文档,但这对我不起作用。看到很多地方都提到了upsert
,但下面的对我也不起作用。
解决方法:
在编辑现有卡片时,创建一个新的增量版本。所以使用 InsertOne
方法。找到现有的卡片,更改某些字段,使卡片在插入前成为最新的。使用允许卡片与其他卡片不同的文件。让我们的用户“状态”,可以是“已发布”/“草稿”/“拒绝”。现在在这种情况下,更改“状态”字段(从“已发布”到“草稿”)并增加“版本”字段。无需使用“FindOneAndUpdate”,因为这会使初始数据丢失。
这样在数据库中会有相同的卡详细信息,第一张卡的 ID 作为不同版本的资源 ID。