Database
[{"_id":1,"some_field":"some_value","array":[{"group":"a","subgroup":"aa","value":1},{"group":"b","subgroup":"bb","value":2},{"group":"a","subgroup":"ab","value":2}]}]
Query
db.collection.aggregate([{$project:{_id:1,some_field:1,array:{$map:{input:{"$objectToArray":{$reduce:{input:"$array",initialValue:{},in:{"$mergeObjects":["$$value",{"$arrayToObject":[[{k:"$$this.group",v:{$map:{input:{"$concatArrays":[["$$this"],{$map:{input:{$filter:{input:{"$objectToArray":"$$value"},as:"filterItem",cond:{$eq:["$$filterItem.k","$$this.group"]}}},as:"mapItem",in:"$$mapItem.v"}},]},as:"map2Item",in:{$cond:[{"$isArray":"$$map2Item"},{$arrayElemAt:["$$map2Item",0]},"$$map2Item"]}}}}]]}]}}}},as:"item",in:{group:"$$item.k",values:"$$item.v"}}}}}])