数组模型上的Mongoose,Deep Population

Max*_*nck 4 mongoose mongodb node.js mongoose-populate

我想深入填充一个可能过于复杂的模型

var ParentSchema = new Schema({
  childs: [{type:Schema.ObjectId, ref: 'Child'}],
});

var ChildSchema = new Schema({
    subject: [{
        price: {type: Number},
        data: {type: Schema.ObjectId, ref: 'Subject'}
    }]
})
Run Code Online (Sandbox Code Playgroud)

但是,当我使用常规人口时,它似乎不起作用.我现在安装了deep-populate并使用以下内容:

Parent.deepPopulate('childs.subjects');
Run Code Online (Sandbox Code Playgroud)

我想知道是否有更简单的方法来完成一系列人物.

Joh*_*yHK 9

猫鼬深填入插件会为这个工作,但你需要使用正确的道路,你要填充最深的领域.在这种情况下,查询应如下所示:

Parent.findOne().deepPopulate('childs.subject.data').exec(function(err, parents) {...});
Run Code Online (Sandbox Code Playgroud)

但是,重要的是要意识到这会使用多个查询(每个人口级别至少有一个)来执行填充.首先是Parent查询,然后是Child查询,然后是Subject查询.因此,最好尽可能嵌入相关数据,但如果您需要独立查询子项和主题数据,那么这是不切实际的.因此,如果您需要在单独的集合中使用相关文档,那么人口就是最佳选择.

有关更多信息和指导,请参阅有关数据建模的文档部分.