我在一个集合中有一个名为 services 的子文档,它包含 serviceID 和 type 。 serviceID 引用两个集合 internalservice , externalservice 根据类型字段而有所不同。
internalServices:[{
serviceID:ObjectId('0000000000000'),
serviceDesc:'sweeping'
},
{
serviceID:ObjectId('0000000000000'),
serviceDesc:'floor cleaning'
}]
externalServices:[{
serviceID:ObjectId('0000000000000'),
serviceDesc:'painting'
},
{
serviceID:ObjectId('0000000000000'),
serviceDesc:'white washing'
}]
以上两个是查找集合。这里是公司集合
_id:"xxxxxxxxxxxxxxxx",
name: 'xxxx',
Address:'xxx',
services:[{
serviceID:ObjectId('0000000000000'),
type: internalservice
},
{
serviceID:ObjectId('0000000000000'),
type: externalservice
}]
在这里,我想根据类型填充服务描述。
是否有可能在填充条件路径?
这是我的代码
Company.findOne({"_id": mongoose.Types.ObjectId(req.params.companyID)},
{})
.populate('services.serviceID','serviceDesc','InternalService')
.exec(function (err, companyInfo) {
console.log(companyInfo);
});
这会填充内部服务说明,但我需要填写类型externalservice的外部服务说明。当我有两个填充时,第二个填充将替换为null的结果替换为不匹配的文档。
答案 0 :(得分:0)
您可以在填充where
条件中加入:
Story
.find(...)
.populate({
path: 'fans',
match: { age: { $gte: 21 }},
select: 'name -_id',
options: { limit: 5 }
})
.exec()