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:
La operación map-reduce se compone de muchas tareas, incluidas lecturas de la colección de entrada, ejecuciones de la función map, ejecuciones de la función reduce, escrituras en una colección temporal durante el procesamiento y escrituras en la colección de salida.
Durante la operación, map-reduce toma los siguientes bloqueos:
La fase de lectura utiliza un bloqueo de lectura. Produce cada 100 documentos.
La inserción en la colección temporal toma un bloqueo de escritura para una sola escritura.
Si la colección de salida no existe, la creación de la colección de salida toma un bloqueo de escritura.
Si la colección de salida existe, las acciones de salida (es
mergedecir,,,)replacereducetienen un bloqueo de escritura. Este bloqueo de escritura es global y bloquea todas las operaciones en lamongodinstancia.