Hai commesso il classico errore di avere nomi di campo arbitrari. MongoDB è "senza schema", ma non significa che non devi pensare al tuo schema. I nomi delle chiavi dovrebbero essere descrittivi e, nel tuo caso, ad es. "S2" in realtà non significa nulla. Per eseguire la maggior parte dei tipi di query e operazioni, dovrai riprogettare lo schema per archiviare i tuoi dati in questo modo:
_id:...
Segment:[
{ field: "S1", value: 1 },
{ field: "S2", value: 5 },
{ field: "Sn", value: 10 },
]
Puoi quindi eseguire la tua query come:
db.collection.aggregate( [
{ $unwind: "$Segment" },
{ $group: {
_id: '$_id',
sum: { $sum: '$Segment.value' }
} }
] );
Che poi si traduce in qualcosa del genere (con l'unico documento dalla tua domanda):
{
"result" : [
{
"_id" : ObjectId("51e4772e13573be11ac2ca6f"),
"sum" : 16
}
],
"ok" : 1
}