Du är både bättre av att använda aggregeringsrammetoderna och även dyka in i det råa MongoDB-samlingsobjektet som tillhandahålls från den underliggande drivrutinen för att göra det. Det är ett mycket bättre alternativ än att försöka översätta syntaxen:
// Returns the original Mongo Result
$result = DB::collection('changes')->raw(function($collection)
{
return $collection->aggregate(array(
array(
'$group' => array(
'_id' => '$field',
'count' => array(
'$sum' => 1
)
)
)
));
});
Resultatet skiljer sig lite från resultatet av en metod som .group()
men detta använder inbyggd kod på MongoDB-servern och förlitar sig inte på JavaScript-tolkning som .group()
metoden faktiskt gör, är verkligen en omslag runt mapReduce.
Slutresultatet är mycket snabbare och generellt sett mer effektivt än vad du får ut av det inbyggda ramgränssnittet.
Så använd det inbyggda MongoDB-sättet för bästa prestanda.