Возможно ли иметь состояние в мангусте?

У меня есть поддокумент под названием 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()

Вот документация по заселению мангуста

Другие вопросы по тегам