É melhor usar os métodos da estrutura de agregação e também mergulhar no objeto de coleção bruto do MongoDB fornecido pelo driver subjacente para fazer isso. É uma opção muito melhor que tentar traduzir a sintaxe:
// 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
)
)
)
));
});
O resultado é um pouco diferente do resultado de um método como
.group()
mas isso usa código nativo no servidor MongoDB e não depende da interpretação JavaScript como o .group()
realmente faz, sendo realmente um wrapper em torno de mapReduce. O resultado final é muito mais rápido e também geralmente mais eficiente do que você obterá com a interface da estrutura nativa.
Portanto, use a maneira nativa do MongoDB para obter o melhor desempenho.