¿Por qué la salida agregada no regresa como DBCursor o List?
El marco de agregación se creó para resolver problemas sencillos que, de otro modo, requerirían map-reduce.
Este marco se usa comúnmente para calcular datos que requieren la base de datos completa como entrada y pocos documentos como salida.
¿Cuál es la diferencia entre el operador $match usado dentro de la función agregada y la búsqueda regular en Mongodb?
Una de las diferencias, como dijiste, es el tipo de devolución. Encuentre retorno de salida de operaciones como un DBCursor .
Otras diferencias:
- El resultado de la agregación debe tener menos de 16 MB. Si usa fragmentos, los datos completos se deben recopilar en un solo punto después del primer $grupo o $ordenar .
- $coincidencia El único propósito es mejorar el poder de la agregación, pero tiene otros usos, como mejorar el rendimiento de la agregación.
y también ¿por qué no podemos hacer un recuento de los documentos que se devuelven?
Puede. Simplemente cuente la cantidad de elementos en la matriz resultante o agregue el siguiente comando al final de la tubería:
{$group: {_id: null, count: {$sum: 1}}}
¿Por qué la función de búsqueda no permite cambiar el nombre de los campos como la función de agregado?
MongoDB es joven y las funciones aún están por llegar. Tal vez en una versión futura podamos hacer eso. Cambiar el nombre de los campos es más crítico en agregación que en buscar .
EDITAR (2014/02/26):
Las operaciones de agregación de MongoDB 2.6 devolverán un cursor.
EDITAR (09/04/2014):
MongoDB 2.6 se lanzó con los cambios de agregación previstos.