У меня есть такой документ:
{ account: 2, {payments: [{flag: false, amt: 100},{flag: false, amt: 100}]},
{ account: 3, {payments: [{flag: false, amt: 100},{flag: false, amt: 100}]},
{ account: 4, {payments: [{flag: true, amt: 50},{flag: false, amt: 100}]}
Я хочу объединить и суммировать счет и подсчитать как минимум 1 истинный
{"true": { "count":2, "sum_amt": 150}},
{"false": { "count": 2, "sum_amt": 0}}
* Примечание: я рассчитываю отдельные учетные записи, по крайней мере, с 1 истинными против учетных записей со всеми ложными.
Я пробовал
[
{
$unwind: {
path: "$remits"
}
},
{
$project: {
"_id": 1,
account: true,
remits: {
flag: true
}
}
},
{
$group: {
_id: {
flag: "$payments.flag"
},
uniqueCount: {
$addToSet: "$account"
}
}
},
{
$project: {
"flag": 1,
cnt: {
$size: "$uniqueCount"
}
}
},
{}
]
, но я думаю, что мне нужно спроецировать поле на уровень учетной записи, если есть одна истина для любой аккаунт с хотя бы 1 истинным. Я не могу сопоставить, так как мне нужно сосчитать те, у которых нет истинного.