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.