Du har gjort det klassiska misstaget att ha godtyckliga fältnamn. MongoDB är "schemafritt", men det betyder inte att du inte behöver tänka på ditt schema. Nyckelnamn ska vara beskrivande, och i ditt fall, t.ex. "S2" betyder egentligen ingenting. För att kunna göra de flesta typer av frågor och operationer måste du designa om ditt schema för att lagra dina data så här:
_id:...
Segment:[
{ field: "S1", value: 1 },
{ field: "S2", value: 5 },
{ field: "Sn", value: 10 },
]
Du kan sedan köra din fråga som:
db.collection.aggregate( [
{ $unwind: "$Segment" },
{ $group: {
_id: '$_id',
sum: { $sum: '$Segment.value' }
} }
] );
Vilket sedan resulterar i något sånt här (med det enda dokumentet från din fråga):
{
"result" : [
{
"_id" : ObjectId("51e4772e13573be11ac2ca6f"),
"sum" : 16
}
],
"ok" : 1
}