È meglio utilizzare i metodi del framework di aggregazione e anche immergersi nell'oggetto di raccolta MongoDB grezzo fornito dal driver sottostante per farlo. È un'opzione molto migliore rispetto al tentativo di tradurre la sintassi:
// 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
)
)
)
));
});
Il risultato è leggermente diverso dal risultato di un metodo come .group()
ma questo utilizza il codice nativo sul server MongoDB e non si basa sull'interpretazione JavaScript come .group()
metodo lo fa effettivamente, essendo davvero un wrapper attorno a mapReduce.
Il risultato finale è molto più veloce e generalmente anche più efficiente di quello che otterrai dall'interfaccia del framework nativa.
Quindi usa il modo nativo MongoDB per le migliori prestazioni.