Heim > Artikel > Backend-Entwicklung > Wie kann man tausende Daten abrufen und den Vorgang einschränken, nachdem mongodb die Gruppe erneut ausgeführt hat?
<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.