$group , $sum, "k" $push, 2D- "c". $unwind, 2D- c. - $group , " p " " "
db.collection.aggregate([
{ '$group': {
'_id': '$type',
'k': { '$sum': '$k' }, 'c': { '$push': '$c' }
} },
{ '$unwind': '$c' },
{ '$unwind': '$c' },
{ '$group': {
'_id': '$_id',
'k': { '$first': '$k' },
'c': { '$sum': '$c.p' }
}}
])
:
{ "_id" : "dog", "k" : 2.2, "c" : 3.6 }
{ "_id" : "cat", "k" : 4.3, "c" : 9.7 }
3.2, , $group, $project .
, $sum $project. , $map "p" .
db.collection.aggregate([
{ '$project': {
'type': 1,
'k': 1,
'c': {
'$sum': {
'$map': {
'input': '$c',
'as': 'subc',
'in': '$$subc.p'
}
}
}
}},
{ '$group': {
'_id': '$type',
'k': { '$sum': '$k' },
'c': { '$sum': '$c' }
}}
])
:
{ "_id" : "cat", "k" : 4.3, "c" : 9.7 }
{ "_id" : "dog", "k" : 2.2, "c" : 3.6 }