Направили сте класическата грешка да имате произволни имена на полета. MongoDB е "без схема", но това не означава, че не е нужно да мислите за вашата схема. Ключовите имена трябва да са описателни, а във вашия случай, напр. "S2" всъщност не означава нищо. За да извършвате повечето видове заявки и операции, ще трябва да преработите схемата си, за да съхранявате данните си по следния начин:
_id:...
Segment:[
{ field: "S1", value: 1 },
{ field: "S2", value: 5 },
{ field: "Sn", value: 10 },
]
След това можете да изпълните заявката си като:
db.collection.aggregate( [
{ $unwind: "$Segment" },
{ $group: {
_id: '$_id',
sum: { $sum: '$Segment.value' }
} }
] );
Което след това води до нещо подобно (с единствения документ от вашия въпрос):
{
"result" : [
{
"_id" : ObjectId("51e4772e13573be11ac2ca6f"),
"sum" : 16
}
],
"ok" : 1
}