Nota
Pipeline de agregación como alternativa
A partir de MongoDB 5.0, map-reduce está obsoleto:
En lugar de map-reduce, deberías utilizar un pipeline de agregación. Los pipelines de agregación proporcionan un mejor rendimiento y facilidad de uso 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:
Puedes ejecutar pipelines de agregación en la interfaz de usuario para implementaciones alojadas en MongoDB Atlas.
Map-reduce es un paradigma de procesamiento de datos para condensar grandes volúmenes de datos en resultados agregados. Para realizar operaciones de map-reduce, MongoDB proporciona el comando de base de datos mapReduce.
Considerar la siguiente operación map-reduce:
MongoDB aplica la fase map a cada documento de entrada (los documentos de la colección que coinciden con la condición de query). La función de mapa emite pares clave-valor. Para las claves que tienen varios valores, MongoDB aplica la fase reduce, que recopila y condensa los datos, y luego almacena los resultados en una colección. La salida de la función reduce puede pasar opcionalmente a través de una función finalizar para procesar aún más los resultados.
Todas las funciones de map-reduce en MongoDB son de JavaScript y se ejecutan dentro del proceso mongod. Las operaciones de Map-Reduce toman como entrada una sola colección y pueden aplicar ordenamiento y limitación antes de la etapa de mapeo. mapReduce puede devolver resultados como un documento o guardarlos en una colección.
Nota
Map-reduce no es compatible con los clústeres gratuitos y flexibles de MongoDB Atlas.
Funciones de JavaScript de Map-Reduce
Las operaciones map-reduce usan funciones JavaScript personalizadas para asignar valores a una clave. Si una clave tiene varios valores, la operación los reduce a un solo objeto. Una función de mapeo puede emitir múltiples pares clave-valor o ninguno. Una función de finalización opcional puede realizar más modificaciones a los resultados.
Resultados de Map-Reduce
Una operación de map-reduce puede guardar los resultados en una colección o devolverlos en línea. Si escribe los resultados en una colección, puede ejecutar operaciones de map-reduce posteriores en la misma colección de entrada que reemplacen, fusionen o reduzcan los nuevos resultados con los resultados anteriores. Consulte mapReduce y Realizar Map-Reduce incremental para obtener ejemplos.
Al devolver los resultados en línea, los documentos de resultados deben ajustarse al límite de tamaño de documento BSON de 16 mebibytes. Para conocer más límites y restricciones, consulte mapReduce.
Colecciones fragmentadas
MongoDB admite operaciones de map-reduce en colecciones particionadas.
Vistas
Las vistas no dan soporte a operaciones de map-reduce.