U hebt de klassieke fout gemaakt om willekeurige veldnamen te hebben. MongoDB is "schemavrij", maar dat betekent niet dat u niet aan uw schema hoeft te denken. Sleutelnamen moeten beschrijvend zijn, en in uw geval, b.v. "S2" betekent niet echt iets. Om de meeste soorten query's en bewerkingen uit te voeren, moet u uw schema opnieuw ontwerpen om uw gegevens als volgt op te slaan:
_id:...
Segment:[
{ field: "S1", value: 1 },
{ field: "S2", value: 5 },
{ field: "Sn", value: 10 },
]
U kunt uw zoekopdracht vervolgens als volgt uitvoeren:
db.collection.aggregate( [
{ $unwind: "$Segment" },
{ $group: {
_id: '$_id',
sum: { $sum: '$Segment.value' }
} }
] );
Wat dan resulteert in iets als dit (met het enige document uit je vraag):
{
"result" : [
{
"_id" : ObjectId("51e4772e13573be11ac2ca6f"),
"sum" : 16
}
],
"ok" : 1
}