So ändern Sie die Struktur von MongoDB ist map-reduce-Ergebnisse?
Wenn ich laufen gehe "Map-reduce" auf einer Mongo-Datenbank, die ich in der Regel erhalten Sie Ergebnisse ähnlich der folgenden:
{ _id: <some-id>, value: { <first-key>: <first-value>, ... } }
Gibt es eine Möglichkeit das weglassen der value: { ... }
Teil und fügen Sie den Inhalt value
im Ergebnis? Im Grunde hätte ich gerne ein Ergebnis, dass wie folgt aussieht:
{ _id: <some-id>, <first-key>: <first-value>, ... }
Diese Weise konnte ich Zusammenführen der Ergebnisse zurück in eine bestehende Sammlung, gehorcht diesem format.
Ich habe auch eine andere Frage bezüglich Map-reduce: Ist es möglich, den Zugriff auf eine weitere Sammlung aus innerhalb eines map
oder reduce
Funktion?
- möglich, Duplikat der In MongoDB mapreduce, wie kann ich reduzieren die Werte für ein Objekt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
MapReduce nur Dokumente zurück, die form {_id:some_id, Wert:some_value}
"some_value" nicht notwendigerweise um ein eingebettetes Dokument, aber in den meisten Fällen ist es so, dass mehrere Variablen berechnet werden, die von der Karte zu Reduzieren-Funktion. Die Dokumente zurückgegeben, die durch die Reduzierung der Funktion muss in der gleichen form, wie Sie eingegeben werden, weil die Senken-Funktion kann ausgeführt werden wiederholt für jede gegebene _id-Wert.
Für eine Schritt-für-Schritt, wie Karte Reduzieren funktioniert, finden Sie in den "Extras" - Abschnitt der MongoDB Rezept mit dem Titel "Suche nach Max Und Min-Werte mit Versionierten Dokumenten" http://cookbook.mongodb.org/patterns/finding_max_and_min/ Dies sollte ein besseres Verständnis der Karte Reduzieren funktioniert, und warum die Ausgabe muss im format {_id:some_id, Wert:some_value}
Ist es möglich, eine inkrementelle Karte Reduzieren, die Zusammenführung der Ergebnisse von mehreren Map-und reduce-Funktionen.
http://www.mongodb.org/display/DOCS/MapReduce#MapReduce-IncrementalMapreduce
Schließlich ist es derzeit nicht möglich, den Zugriff auf mehrere Sammlungen auf einmal mit der Karte Reduzieren. Es gibt ein feature request für diese Funktion, aber es ist nicht geplant, Hinzugefügt werden alle kommenden Versionen.
https://jira.mongodb.org/browse/SERVER-970
RE: Zugriff auf andere Sammlungen von innerhalb der Map/reduce-Funktionen. Was Sie tun können, ist der Hebel "scope" push-in-Daten benötigt, die von m/r während der Ausführung. HINWEIS: Umfang akzeptiert nur eine EINFACHE Sammlung von Objekten hier. Mit einfach meine ich keine verschachtelte Dokumente.
Den oben genannten Umfang der Sammlung, funktioniert einwandfrei. Die m/r-Funktion nur unter "Volk" als eine Globale variable, und Sie können Durchlaufen Sie Ihre Sammlung, etc.
Oben würde nicht funktionieren, je nach Treiber, die Sie verwenden erhalten Sie eine Reihe Fehler und erzählte, dass die maximale Anruf-Größe wurde überschritten oder so ähnlich. Kleben mit einfachen Objekten im Rahmen halten wird das Leben einfach.
Dieser arbeitete für mich:
Vorausgesetzt, Sie sind emitting
this
oder eine Variante davon in der Karte, legen Sie zunächstthis._id = undefined
.Set-out-Modus zu verbinden.
Check mein Beispiel hier