Nota
Canalización de agregación como alternativa a Map-Reduce
A partir de MongoDB 5.0, map-reduce está obsoleto:
En lugar de map-reduce, debería usar una canalización de agregación. Las canalizaciones de agregación ofrecen mejor rendimiento y usabilidad que map-reduce.
Puede reescribir las operaciones de map-reduce utilizando etapas de canalización de agregación, como
$group, y$mergeotros.Para las operaciones map-reduce que requieren una funcionalidad personalizada, puedes utilizar los operadores de agregación
$accumulatory$function. Puedes utilizar esos operadores para definir expresiones de agregación personalizadas en JavaScript.
Para ejemplos de alternativas de pipeline de agregación a map-reduce, consulte:
Tabla de comparación de comandos de agregación
La siguiente tabla proporciona una breve descripción general de las características de los comandos de agregación de MongoDB.
Descripción | Diseñado con objetivos específicos de mejorar el rendimiento y la usabilidad de las tareas de agregación. Utiliza un enfoque de "tubería" donde los objetos se transforman a medida que pasan por una serie de etapas de la tubería, Para obtener más información sobre las etapas de la canalización, consulte Etapas de agregación. | Implementa la agregación Map-Reduce para procesar grandes conjuntos de datos. |
Características clave | Los operadores de pipeline pueden repetirse según sea necesario. Los operadores de tuberías no necesitan producir un documento de salida para cada documento de entrada. También puede generar nuevos documentos o filtrar documentos. Utilizando la etapa | Además de las operaciones de agrupación, puede realizar tareas de agregación complejas, así como realizar agregación incremental en conjuntos de datos en continuo crecimiento. Consulte los ejemplos de Map-Reduce y realice Map-Reduce incremental. |
Flexibilidad | Puede definir acumuladores personalizados con También puede agregar campos calculados, crear nuevos subobjetos virtuales y extraer subcampos en el nivel superior de resultados mediante el Consulte para obtener | Las funciones de JavaScript personalizadas
|
Resultados de salida | Devuelve los resultados como un cursor. Si la canalización incluye la
| Devuelve resultados con varias opciones (en línea, nueva colección, fusionar, reemplazar, reducir). Consulte para obtener más |
particionado | Admite colecciones de entradas fragmentadas y no fragmentadas.
| Admite colecciones de entradas fragmentadas y no fragmentadas. |
Más información |