sql >> Base de Datos >  >> NoSQL >> MongoDB

diferencia entre agregado ($ partido) y encontrar, en MongoDB?

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