我们有2个收藏
“产品”集合中的一个文档如下:
{
id: ObjectID
name: string
price: number
photo: ObjectID // A ref to Photos collection
}
“照片”收藏夹中的文档:
{
id: ObjectID
path: string
}
我想从Products集合中找到所有带有ref字段的字段。
所以我希望结果是:
{
id: ObjectID
name: string
price: number
photo: {
id: ObjectID
path: string
}
}
当我使用Product.find()
时,只会导致:
{
id: ObjectID
name: string
price: number
photo: ObjectID
}
答案 0 :(得分:1)
在这种情况下,您需要使用填充方法。
您可以将其用作模型本身的函数:
productSchema.pre(/^find/, function(next) {
this.populate('photo').populate({
path: 'path',
});
next();
});
请务必在最后打next()
,否则您将被卡住。
这在Mongoose中称为“预”中间件,可帮助自动检索任何查找方法(findById,findOne等)上的数据。