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' }] }
还有Car
和House
(他们的结构对于这个问题并不重要,我怎样在单个.populate()
调用中深入填充多个Client
的字段?
我试过了什么:
Manager.find() .populate({ path: 'users', populate: { path: 'cars' }, populate: { path: 'houses' } });
它会真正让我感到惊讶,如果它工作(因为我覆盖以前声明的populate
密钥传递给.populate()
方法)。 我的例子显然返回每个用户的填充houses
领域 – 最后一个。 老实说,不知道, 文档里也没有。 它甚至支持? 我知道这是为了“浅”填充,基于我的例子:
User.populate('cars') .populate('houses')
那么深的呢?
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' });