Я не вижу фактических входных документов. Если выходные данные сверху были получены из этого конвейера, два документа прямо перед групповым этапом выглядели так (я не могу сказать, что содержалось в type
):
{
_id: "169v55",
doc:{
"code": "2001",
"active": true,
"delist": false
},
type: unknown
}
и
{
_id: "SLO1019jkf",
doc:{
"code": "MOUNTY2026",
"active": false,
"delist": false,
"createdAt": "2019-12-26T15:36:51.819Z"
},
type: unknown
}
Таким образом, если бы вы собирались в группы на основе местоположения, вы могли бы суммировать активные и неактивные данные:
{$group:{
_id:"$_id",
active: {$sum:{$cond:[{$eq:["$active",true]},1,0]}},
inactive: {$sum:{$cond:[{$eq:["$active",false]},1,0]}}
}}
Это даст вам каждое местоположение в отдельных документах с подсчетами. Если вам нужно, чтобы они действительно были в одном массиве, группируйте по нулю, как вы, но pu sh считает вместо исходного поля do c:
{ k:"$_id", v:{active:"$active",inactive:"$inactive"} }