c# - 文档版本控制模式的同一文档的两个集合上的不同键
问题描述
我有一个需要跟踪文档历史记录的 C# 应用程序,所以我想实现Document Versioning Pattern。但是,我对如何在 hist 集合上执行 _id 感到迷茫。
假设我的文档如下所示:
{
_id : "abc",
rev : 3,
loc : "root"
dat : {
..
}
}
我尝试的是两个集合,live
和hist
. 但是如何将 hist 表上的 _id 设置为 on{ _id, rev }
或生成的 ObjectId?否则,尝试将“abc”的下一个 rev 插入 hist 会导致重复键错误。
c# 类上的属性不起作用,因为这会导致两个集合上的 _id 相同。
我还考虑将它们放入一个集合中,但是如果我需要所有带有 loc=root 的活动文档,这会使查询变得相当复杂。
我在这里有点难过,文章没有提到这个明显的问题。
解决方案
您不要在历史收集中使用 _id 作为 _id。每个历史文档都可以有自己唯一的 _id
历史
{
_id: 'own id', //unique
ref: '_id of live',
rev: 3,
changes: '...'
}
推荐阅读
- python-2.7 - 更新到最新的操作系统版本后无法停止网络服务器
- angularjs - Webpack:仅在一个模块中包含供应商
- sql - SQL JOIN 2 个表,其中包含来自第 3 个表的相似数据和视图
- sql - 具有最大和多重条件的 Epression
- r - 更改数据框的单位和值
- c# - 为什么调试时 Cursor.Position 的值错误?
- c# - 如何以正确的顺序设置 LiveCharts StackedColumns 标签
- visual-studio-code - 如何调试在 linux(远程)下的 QEMU(带有 gdb-server)内运行但使用 windows 主机的 ARM 进程?
- vega-lite - 是否可以在 vega-lite 中注册命名的自定义配色方案
- java - 有没有办法编写 Mockito.when(...) 来覆盖方法的所有重载,即为共享相同方法名称的任何调用返回相同的东西?