<code>$keys = array( "AREA" => 1 ); $initial = array( "show" =>0, "click"=>0, "cost"=>0, ); $reduce = "function (obj,prev) { prev.show += obj.show; prev.click += obj.click; prev.cost +=obj.cost; } "; $re = $collection->group($keys, $initial, $reduce);</code>
<code>$keys = array( "AREA" => 1 ); $initial = array( "show" =>0, "click"=>0, "cost"=>0, ); $reduce = "function (obj,prev) { prev.show += obj.show; prev.click += obj.click; prev.cost +=obj.cost; } "; $re = $collection->group($keys, $initial, $reduce);</code>
aggregation
ist das, was Sie verwenden müssen. Durch die Suche wurde schon viel darüber gesagt, daher werde ich hier nicht näher darauf eingehen. Nach Ihrem Code zu urteilen, sollte er ungefähr so geschrieben sein
<code>db.collection.aggregate([ {$group: {_id: {AREA: "$AREA"}, show: {$sum: "$show"}, click: {$sum: "$click"}, cost: {$sum: "$cost"}}}, {$limit: 1000} ]);</code>
Die Rückkehr ist ein Cursor.