U kunt beide beter de methoden van het aggregatieraamwerk gebruiken en ook in het onbewerkte MongoDB-verzamelingsobject duiken dat door de onderliggende driver wordt geleverd om dit te doen. Het is een veel betere optie om de syntaxis te vertalen:
// 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
)
)
)
));
});
Het resultaat is een beetje anders dan het resultaat van een methode als .group()
maar dit gebruikt native code op de MongoDB-server en is niet afhankelijk van JavaScript-interpretatie zoals de .group()
methode doet dat ook, omdat het echt een wrapper is rond mapReduce.
Het eindresultaat is veel sneller, en over het algemeen ook efficiënter dan u uit de native framework-interface kunt halen.
Gebruik dus de native MongoDB-manier voor de beste prestaties.