繁体   English   中英

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

How to do a document versioning in MongoDB using Driver

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

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

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

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

VB.Net使用MongoDB.Driver

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

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

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

1 个回复

解决办法:

在编辑现有卡片时,创建一个版本增加的新卡片。 所以使用InsertOne方法。 找到现有卡,更改某些字段,以便在插入之前使卡最新。 使用允许卡片与其他卡片不同的文件。 让我们的用户“状态”,可以是“已发布”/“草稿”/“拒绝”。 现在在这种情况下,更改“状态”字段(从“已发布”到“草稿”)并增加“版本”字段。 无需使用“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输出。(因为我不是程序员,我还没有更深入的版本控制系统经验。)我想使用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