我正在寻找建模这些数据的最佳方式:我有一系列法律。每篇文章可能有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}]
});
此当前架构是错误的,因为文档只能引用文章或特定段落。 我必须能够通过两种方式查询文件集:法律或法律段落。
第一个也是太简单的解决方案是"飞机"这个分层数据在" Law"收集并为每个法律和段落提供不同的文件:
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"}
...
]
我不喜欢这样,因为它需要在业务层中进行一些额外的工作来完成文章查询(正如我所说,我需要引用"第1条和第34条的文档;但是还"第1条 - 第1段和第34段;)
编辑:我发现了这个问题 Mongoose Schema for hierarchical data like a folder > subfolder > file 但是我不清楚是否使用路径我可以轻松地检索参考文件(如章节及其所有段落或单个段落)