Возможно ли иметь состояние в мангусте?
У меня есть поддокумент под названием services в коллекции, он содержит serviceID и тип. 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. Когда у меня есть два заполнения, второе заполнение заменяет результат нулевым для несопоставленных документов.
1 ответ
Вы можете включить в заселение where
условия как:
Story
.find(...)
.populate({
path: 'fans',
match: { age: { $gte: 21 }},
select: 'name -_id',
options: { limit: 5 }
})
.exec()