mongoose多深填充

说,我有Manager架构:

 { name: { type: String }, clients: [{ type: Mongoose.Schema.ObjectId, ref: 'Client'}] } 

而且,我有Client模式:

 { name : { type String }, cars : [{ type: Mongoose.Schema.ObjectId, ref: 'Car' }], houses: [{ type: Mongoose.Schema.ObjectId, ref: 'House' }] } 

还有CarHouse (他们的结构对于这个问题并不重要,我怎样在单个.populate()调用中深入填充多个Client的字段?

我试过了什么:

 Manager.find() .populate({ path: 'users', populate: { path: 'cars' }, populate: { path: 'houses' } }); 

它会真正让我感到惊讶,如果它工作(因为我覆盖以前声明的populate密钥传递给.populate()方法)。 我的例子显然返回每个用户的填充houses领域 – 最后一个。 老实说,不知道, 文档里也没有。 它甚至支持? 我知道这是为了“浅”填充,基于我的例子:

 User.populate('cars') .populate('houses') 

那么深的呢?

       

网上收集的解决方案 "mongoose多深填充"

1)传递要填充属性的对象数组:

 Manager.find() .populate({ path : 'users', populate: [ { path: 'cars' }, { path: 'houses' } ] }); 

该解决scheme可以充分利用深度填充。 考虑:

 Manager.find() .populate({ path : 'users', populate: [ { path: 'cars' }, { path : 'houses', populate: { path : 'rooms', populate: 'windows' } } ] }); 

2)传递要填充的空格分隔的string的string:

 Manager.find() .populate({ path : 'users', populate: 'cars houses' });