Mon goose условие проекции для вложенных документов в виде массива - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть такой документ:

{
 banks : [
           {bank_name : 'bank1',
            transfers : [
                          {amount : 10,
                           reason : 'A'
                          },
                          {amount : 3,
                           reason : 'B'
                          }
                         ]
            }
         ]

}

Я бы хотел получить все переходы всех банков, только с reason == 'A'. Как я могу это сделать?

Я пытаюсь что-то вроде:

Model.aggregate().match()
                .unwind(
                    { path: '$banks'})
                .unwind(
                    {
                      path: '$banks.transfers',
                    })
                .project(
                   {'banks.bank_name':1,
                    'banks.transfers.amount' : {
                      $cond: 
                         [
                          {'$banks.transfers.reason' : 'A'},  // if
                           '$banks.transfers.amount',         // then
                           null                               // else
                         ]
                                               }
            })

Но он получает ошибку

MongoError: Unrecognized expression '$banks.transfers.reason'

Ожидаемый результат должен быть массивом передач, возможно сгруппированы по "bank_name".

[
 {bank_name:'bank1', 
  transfers: [ {amount:10, reason:'A'}, 
               {amount:1, reason:'A'}
             ]
 },
{bank_name:'bank2', 
 transfers: [  {amount:9, reason:'A'},
               {amount:3, reason:'A'}
            ]
 }
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...