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

diferença entre agregar ($match) e encontrar, no MongoDB?


Por que a saída agregada não retorna como um DBCursor ou uma lista?

A estrutura de agregação foi criada para resolver problemas fáceis que, de outra forma, exigiriam redução de mapa.

Essa estrutura é comumente usada para computar dados que requerem o banco de dados completo como entrada e poucos documentos como saída.

Qual é a diferença entre o operador $match usado dentro da função agregada e o achado regular no Mongodb?

Uma das diferenças, como você disse, é o tipo de retorno. Encontre retorno de saída de operações como um DBursor .

Outras diferenças:
  • O resultado da agregação deve ter menos de 16 MB. Se você estiver usando shards, os dados completos devem ser coletados em um único ponto após o primeiro $group ou $sort .
  • $match O único objetivo é melhorar o poder da agregação, mas tem alguns outros usos, como melhorar o desempenho da agregação.

e também por que não conseguimos uma contagem dos documentos que são devolvidos?

Você pode. Basta contar o número de elementos no array resultante ou adicionar o seguinte comando ao final do pipe:
{$group: {_id: null, count: {$sum: 1}}}

Por que a função find não permite renomear os nomes dos campos como a função agregada?

O MongoDB é jovem e os recursos ainda estão chegando. Talvez em uma versão futura possamos fazer isso. Renomear campos é mais importante na agregação do que em localizar .

EDITAR (26/02/2014):


As operações de agregação do MongoDB 2.6 retornarão um cursor.

EDITAR (09/04/2014):


O MongoDB 2.6 foi lançado com as alterações de agregação previstas.