繁体   English   中英

如何使用驱动程序在 MongoDB 中进行文档版本控制

How to do a document versioning in MongoDB using Driver

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

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

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

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

使用MongoDB.DriverVB.Net

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

问题: FindOneAndUpdate返回更新的document ,我丢失了初始数据。

在这里看到了有关如何复制文档的信息,但这对我不起作用。 看到很多地方提到upsert ,但以下内容对我也不起作用。

1 个回复

解决方案:

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

这样,在 db 中,第一张卡的 ID 将与具有不同版本的资源 ID 相同的卡详细信息。

1 使用MarkLogic REST API进行文档版本控制

我们目前正在使用MarkLogic的dls函数来处理文档版本控制,并且正在尝试切换以使用REST API。 默认情况下, document端点不使用版本控制,我无法找到一种方法来实现它。 我指的是用于保存多个文档版本的dls函数,顺便说一句,而不是REST API文档提到的新的“内容版本控制 ...

2 使用C#驱动程序在MongoDB中进行分片

我尝试试验分片并进行示例配置:两个分片中最简单的一个。 这是bat文件中的代码: 当我尝试向该数据库执行简单的插入代码时,它会执行,但是两个分片都是空的。 这是插入代码: 这也是在连接上执行的代码: 所以我没有设法使碎片工作。 您能告诉我我做错了什么吗:配置,连接或 ...

5 如何使用nbconvert作为git textconv驱动程序来启用Jupyter笔记本的有效版本控制

我正在尝试做什么以及它与类似问题的区别 我想使用Git版本控制Jupyter笔记本。 不幸的是,默认情况下,Git和Jupyter笔记本电脑不能很好地播放。 一个.ipynb文件是一个.json不仅含有的Python代码本身,而且还大量的元数据(例如,小区执行计数)和细胞输出文件。 ...

6 如何使用 Mercurial 进行文本文档的版本控制?

这不完全是一个编程问题,但我认为它比TeX 组更适合这里我想使用版本控制来跟踪文本文件的更改(用于创建LaTeX output。(由于我不是程序员,我对版本控制系统还没有更深入的经验。)我想使用Mercurial为此,我正在使用 MacOS X 10.6。 这些文件是关于工作申请的,所以每个公司主 ...

7 在MongoDB中对单个文档进行版本控制的方法有哪些?

如果我将属性添加到域对象,这将波及到MongoDB文档。 例如,向我的用户添加新的“ facebookId”属性,将向我的MongoDB文档中添加新的facebookId字段。 跟踪文档版本的方法有哪些? 我正在考虑向所有文档添加“ _version”字段。 还有其他解决方案吗? ...

2013-03-17 16:49:15 1 63   mongodb
10 使用spring数据的Mongodb文档版本控制

我在我的Java应用程序中使用Spring Data连接到MongoDb并且需要对文档进行版本控制(基本上存储历史记录)。 如果使用Mongoid ,它似乎在Ruby中非常简单 我想知道Spring数据是否与Java类似。 或者你最好尝试实现自己的。 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM