Como você tem os valores em um objeto em vez de uma matriz, precisará usar 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,
}
Se possível, você deve emitir os valores como uma matriz de um tipo numérico, pois isso oferece mais opções (ou seja, agregação) e (a menos que o conjunto de dados seja grande) provavelmente benefícios de desempenho.