Du har lavet den klassiske fejl at have vilkårlige feltnavne. MongoDB er "skema-fri", men det betyder ikke, at du ikke behøver at tænke på dit skema. Nøglenavne skal være beskrivende, og i dit tilfælde, f.eks. "S2" betyder ikke rigtig noget. For at kunne udføre de fleste former for forespørgsler og operationer skal du omdesigne dit skema for at gemme dine data sådan her:
_id:...
Segment:[
{ field: "S1", value: 1 },
{ field: "S2", value: 5 },
{ field: "Sn", value: 10 },
]
Du kan derefter køre din forespørgsel som:
db.collection.aggregate( [
{ $unwind: "$Segment" },
{ $group: {
_id: '$_id',
sum: { $sum: '$Segment.value' }
} }
] );
Hvilket så resulterer i noget som dette (med det eneste dokument fra dit spørgsmål):
{
"result" : [
{
"_id" : ObjectId("51e4772e13573be11ac2ca6f"),
"sum" : 16
}
],
"ok" : 1
}