比方说,我有一个Manager
模式:
{
name: { type: String },
clients: [{ type: Mongoose.Schema.ObjectId, ref: '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')
深入的那个呢?
Users.populate({ path: 'users', populate: { path: 'cars houses' } })
。其中'cars houses'
是当前级别中路径的以空格分隔的列表。至少对于单个级别是正确的,因此对于其他任何内容肯定也是相同的。 - Neil Lunn.populate().populate()
。 - Neil Lunn