MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como converter consulta de agregação MongoDB para Laravel MongoDB por jensegers


É 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.