Тъй като имате стойностите в обект вместо в масив, ще трябва да използвате mapReduce.
// Emit the values as integers
var mapFunction =
function() {
for (key in this.packets) {
emit(null, parseInt(this.packets[key]));
}
}
// Reduce to a simple sum
var reduceFunction =
function(key, values) {
return Array.sum(values);
}
> db.collection.mapReduce(mapFunction, reduceFunction, {out: {inline:1}})
{
"results" : [
{
"_id" : null,
"value" : 2381
}
],
"ok" : 1,
}
Ако изобщо е възможно, вместо това трябва да излъчвате стойностите като масив от числов тип, тъй като това ви дава повече опции (т.е. агрегиране) и (освен ако наборът от данни не е голям) вероятно подобрява производителността.