Du er både bedre stillet ved at bruge aggregeringsrammemetoderne og også dykke ned i det rå MongoDB-samlingsobjekt, der leveres fra den underliggende driver for at gøre det. Det er en meget bedre mulighed end at prøve at oversætte syntaksen:
// 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 er lidt anderledes end resultatet af en metode som .group()
men dette bruger indbygget kode på MongoDB-serveren og er ikke afhængig af JavaScript-fortolkning som .group()
metoden faktisk gør, er virkelig en indpakning omkring mapReduce.
Slutresultatet er meget hurtigere og generelt mere effektivt, end du får ud af den oprindelige rammegrænseflade.
Så brug den oprindelige MongoDB-måde for den bedste ydeevne.