У меня есть такой документ:
{
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'}
]
}
]