我需要对集合中的文档进行版本控制,以便对文档的任何更改都会生成副本,并将编辑后的副本保存为“当前”并保留以前的版本,以及时间戳、人员编辑等。我设计了一个架构如:
var doc = new Schema;
doc.Add({ created: Date,
created_by:{type: ObjectId, ref: 'User'},
doc_id: String,
doc_data: String,
prev_docs:[doc]
});
因此,编辑文档将获取当前文档,制作副本并更新文档,将 current_doc 粘贴到 prev_docs 中,等等。
- 模式可以引用自身
prev_docs
吗? - 这种设计模式在 MongoDB 中是否可扩展?
prev_docs
只会被用作审计跟踪,用户通常不会看到以前的版本,并且会从大多数查询中完全排除。