Nota
Pipeline de agregación como alternativa a Map-Reduce
A partir de MongoDB 5.0, El map-reduce está en desuso:
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.
Puedes reescribir las operaciones de map-reduce usando etapas del pipeline de agregación, como
$group,$mergey otros.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 soporta operaciones en colecciones particionadas, tanto como entrada como salida. Esta sección describe los comportamientos de mapReduce específicos de las colecciones particionadas.
Colección particionada 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 particionada como resultado
Si el campo out de mapReduce tiene el valor sharded, MongoDB particiona la colección de resultados utilizando el campo _id como la clave de partición.
Para enviar a una colección particionada:
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á particionada, la operación de Map-Reduce falla.
Para una colección particionada 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 las particiones.
mongosdespacha, en paralelo, una tarea de posprocesamiento map-reduce a cada partición que posee un fragmento. Durante el postprocesamiento, cada partición extraerá los resultados de sus propios fragmentos de las otras particiones, ejecutará la reducción/finalización final y escribirá localmente en la colección de salida.
Nota
Durante trabajos de reducción de mapas posteriores, MongoDB divide fragmentos según sea necesario.
El equilibrado de fragmentos para la colección de salida se evita automáticamente durante el post-procesamiento para impedir problemas de concurrencia.