查询分层引用

时间:2016-03-19 17:59:24

标签: mongoose mongoose-schema

我正在寻找建模这些数据的最佳方式:我有一系列法律。每篇文章可能有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(或其段落)的文件。
  • 在第二种情况下,我只想要那些涉及该法律段落的文件(忽略其他段落)

第一个也是太简单的解决方案是"飞机"这个分层数据在" 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 但是我不清楚是否使用路径我可以轻松地检索参考文件(如章节及其所有段落或单个段落)

0 个答案:

没有答案