Il miglior tutorial MongoDB Mappa Ridurre Nel 2024, in questo tutorial puoi imparare comando di MapReduce,Usa MapReduce,
Map-Reduce è un modello di elaborazione, significa semplicemente che il grosso del lavoro (dati) di decomposizione (MAP) per eseguire, e quindi unire i risultati in un risultato finale (RIDURRE).
MongoDB fornisce una mappa-Reduce è molto flessibile per l'analisi dei dati su larga scala è anche molto pratico.
Quanto segue è la sintassi di base di MapReduce:
>db.collection.mapReduce( function() {emit(key,value);}, //map 函数 function(key,values) {return reduceFunction}, //reduce 函数 { out: collection, query: document, sort: document, limit: number } )
Utilizzo delle funzioni MapReduce per realizzare le due funzioni Mappa e ridurre funzioni, Mappa funzione di chiamata emette (chiave, valore), attraversare la raccolta di tutti i record, e il valore della chiave viene passato alla funzione Riduzione per l'elaborazione.
la funzione Map deve chiamare emettono (chiave, valore) Restituisce coppie.
Descrizione Parametro:
Si consideri il seguente struttura del documento per memorizzare articoli, documenti dell'utente, e memorizza il campo status dell'articolo utente nome_utente:
>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 })
Ora useremo i messaggi impostati funzione MapReduce per selezionare un articolo pubblicato (stato: "attivo"), e dal pacchetto nome_utente calcolato per ogni utente Messaggi:
>db.posts.mapReduce( function() { emit(this.user_name,1); }, function(key, values) {return Array.sum(values)}, { query:{status:"active"}, out:"post_total" } )
Sopra MapReduce output è:
{ "result" : "post_total", "timeMillis" : 23, "counts" : { "input" : 5, "emit" : 5, "reduce" : 1, "output" : 2 }, "ok" : 1 }
I risultati hanno mostrato che un totale di quattro corrispondono ai criteri di query (stato: "attivi") i documenti generati quattro chiave nella funzione di mappa nel documento, e quindi utilizzare la stessa funzione per ridurre la chiave divisi in due gruppi.
Parametri specifici:
Utilizzando l'operatore find per visualizzare i risultati della query MapReduce di:
>db.posts.mapReduce( function() { emit(this.user_name,1); }, function(key, values) {return Array.sum(values)}, { query:{status:"active"}, out:"post_total" } ).find()
I risultati della query di cui sopra è riportato qui di seguito, ci sono due utenti tom e segnare due articoli pubblicati:
{ "_id" : "mark", "value" : 4 } { "_id" : "w3big", "value" : 1 }
In modo simile, MapReduce può essere utilizzato per costruire grandi e complessi query di aggregazione.
funzione funzioni Mappa e ridurre possono essere implementate utilizzando JavaScript, MapReduce fanno uso di molto flessibile e potente.