Eftersom du har värdena i ett objekt istället för en array, måste du använda 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,
}
Om det överhuvudtaget är möjligt bör du avge värdena som en matris av en numerisk typ istället eftersom det ger dig fler alternativ (dvs. aggregering) och (om inte datamängden är stor) förmodligen prestandafördelar.