El mejor tutorial de MongoDB MapReduce en 2024. En este tutorial podrás aprender comando MapReduce,uso de MapReduce,
Map-Reduce es un modelo de computación, simplemente significa que la mayor parte del trabajo (datos) de descomposición (MAP) para llevar a cabo, a continuación, combinar los resultados en un resultado final (REDUCIR).
MongoDB proporciona un mapa-Reducir es muy flexible para el análisis de datos a gran escala también es bastante práctico.
La siguiente es la sintaxis básica del MapReduce:
>db.collection.mapReduce( function() {emit(key,value);}, //map 函数 function(key,values) {return reduceFunction}, //reduce 函数 { out: collection, query: document, sort: document, limit: number } )
Uso de las funciones de MapReduce para lograr las dos funciones Mapa y Reducir funciones, Mapa llamada a la función emiten (clave, valor), atravesar la colección en todos los registros, y el valor de la clave se pasa a la función Reducir para su procesamiento.
función de mapa debe llamar emiten (clave, valor) Devuelve pares.
Descripción de parámetros:
Considere la siguiente estructura de documento para almacenar artículos, documentos del usuario, y almacena el campo de estado de usuario nombre_usuario artículo:
>db.posts.insert({ "post_text": "本教程,最全的技术文档。", "user_name": "mark", "status":"active" }) WriteResult({ "nInserted" : 1 }) >db.posts.insert({ "post_text": "本教程,最全的技术文档。", "user_name": "mark", "status":"active" }) WriteResult({ "nInserted" : 1 }) >db.posts.insert({ "post_text": "本教程,最全的技术文档。", "user_name": "mark", "status":"active" }) WriteResult({ "nInserted" : 1 }) >db.posts.insert({ "post_text": "本教程,最全的技术文档。", "user_name": "mark", "status":"active" }) WriteResult({ "nInserted" : 1 }) >db.posts.insert({ "post_text": "本教程,最全的技术文档。", "user_name": "mark", "status":"disabled" }) WriteResult({ "nInserted" : 1 }) >db.posts.insert({ "post_text": "本教程,最全的技术文档。", "user_name": "w3big", "status":"disabled" }) WriteResult({ "nInserted" : 1 }) >db.posts.insert({ "post_text": "本教程,最全的技术文档。", "user_name": "w3big", "status":"disabled" }) WriteResult({ "nInserted" : 1 }) >db.posts.insert({ "post_text": "本教程,最全的技术文档。", "user_name": "w3big", "status":"active" }) WriteResult({ "nInserted" : 1 })
Ahora vamos a utilizar los postes colocados función de MapReduce para seleccionar un artículo publicado (el estado: "activo"), y por el paquete nombre_usuario calcula para cada usuario Mensajes:
>db.posts.mapReduce( function() { emit(this.user_name,1); }, function(key, values) {return Array.sum(values)}, { query:{status:"active"}, out:"post_total" } )
Por encima de MapReduce salida es:
{ "result" : "post_total", "timeMillis" : 23, "counts" : { "input" : 5, "emit" : 5, "reduce" : 1, "output" : 2 }, "ok" : 1 }
Los resultados mostraron que un total de cuatro coincide con los criterios de la consulta (estado: "activos") generaron cuatro documentos clave en la función de mapas en el documento, y luego usar la misma función clave para reducir divididos en dos grupos.
Los parámetros específicos:
Usando el operador hallazgo para ver el resultado de la consulta de MapReduce:
>db.posts.mapReduce( function() { emit(this.user_name,1); }, function(key, values) {return Array.sum(values)}, { query:{status:"active"}, out:"post_total" } ).find()
Los resultados de la consulta anterior se muestra a continuación, hay dos usuarios tom y marcan dos artículos publicados:
{ "_id" : "mark", "value" : 4 } { "_id" : "w3big", "value" : 1 }
De una manera similar, MapReduce se puede utilizar para construir consultas agregados grandes y complejos.
Mapa de función y reducir las funciones se pueden implementar utilizando JavaScript, MapReduce hacer uso de muy flexible y potente.