我正在寻找对这些数据建模的最佳方法:我有一系列法律。每篇文章可以有 0 个段落(这意味着该段落没有明确编号)或更多(最多 5 个)。
var lawSchema = new Schema({
name:{type:String,required:true},
chapter:{type:String},
paragraph:[{type:Numer}]
});
var documentSchema = = new Schema({
name:{type:String,required:true},
article_ref:[{item:{type: ObjectId, ref: 'article'},comment:String}]
});
此当前模式是错误的,因为文档只能引用文章或特定段落。我必须能够以两种方式查询文档集合:通过法律或法律段落。
- 在第一种情况下,我想获取所有涉及该法律 X(或其段落)的文件。
- 在第二种情况下,我只想要引用该法律段落的文件(忽略其他段落)
第一个也是非常简单的解决方案是在“法律”集合中“平面化”这个分层数据,并为每个法律和段落提供不同的文档:
var lawSchema = new Schema({
name:{type:String,required:true},
});
集合应该是这样的:
[
{_id:000,name:"article1"},
{_id:001,name:"article1 - paragraph 1"},
{_id:002,name:"article1 - paragraph 2"},
{_id:003,name:"article2"}
...
]
我不喜欢这样,因为它需要在业务层进行大量的额外工作才能完成逐篇查询(正如我所说,我需要引用“article1”但也引用“article1 - 第1段”的文档)
编辑:我发现这个问题 Mongoose Schema for hierarchy data like a folder > subfolder > file 但我不清楚如果使用路径我很容易检索到我所说的参考(参考章节及其所有段落或单个段落)