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:
Map-reduce admite operaciones en colecciones fragmentadas, tanto como entrada como como salida. Esta sección describe el comportamiento de específico para colecciones mapReduce fragmentadas.
Colección fragmentada como entrada
Al usar una colección fragmentada como entrada para una operación de map-reduce, enviará automáticamente el trabajo de map-reduce a cadamongos mongos fragmento en paralelo. No se requiere ninguna opción especial. esperará a que finalicen los trabajos en todos los fragmentos.
Colección fragmentada como salida
Si el out campo para tiene mapReduce el sharded valor, MongoDB fragmenta la colección de salida utilizando el _id campo como clave de fragmentación.
Para exportar a una colección fragmentada:
Si la colección de salida no existe, primero crea la colección particionada.
Si la colección de salida ya existe pero no está fragmentada, map-reduce falla.
Para una colección fragmentada nueva o vacía, MongoDB utiliza los resultados de la primera etapa de la operación map-reduce para crear los fragmentos iniciales distribuidos entre los fragmentos.
mongosEnvía, en paralelo, un trabajo de posprocesamiento de map-reduce a cada fragmento que posee un fragmento. Durante el posprocesamiento, cada fragmento extrae los resultados de sus propios fragmentos de los demás, ejecuta la reducción/finalización final y escribe localmente en la colección de salida.
Nota
Durante trabajos de reducción de mapas posteriores, MongoDB divide fragmentos según sea necesario.
El equilibrio de fragmentos para la colección de salida se evita automáticamente durante el posprocesamiento para evitar problemas de concurrencia.