Database Reference
In-Depth Information
}
Aber was genau passiert in dieser Abfrage? Eine Abfrage hat als einzigen Eingangspara-
meter das Dokument. Beim ersten Aufruf dieser Abfrage werden alle Dokumente gegen
diese Abfrage geworfen. Zunächst wird geprüft, ob dieses Dokument ein Attribut stadt mit
dem Wert Berlin hat. Wenn ja, wird ein Key-Value-Objekt ausgeben ( emit ), mit dem Key
1 und dem Value {“Meier“} , der in den Ergebnisbaum integriert wird. Ein Aufruf dieser
Funktion für unsere Autohäuser würde folgendes Ergebnis bringen:
{1,"Schulze" }
{1,"Meier"}
Die Ergebnisse sind immer nach dem emittierten Key sortiert. Da wir überall eine 1 als Key
ausgegeben haben, findet keine Sortierung statt. Alternativ kann man für den Key statt der
1 auch den Namen des Autohauses ausgeben, und als Value die 1: emit(doc.name,1) . Das
Ergebnis sieht schon besser aus:
{"Meier",1}
{"Schulze",1}
Der Key ist nicht auf eine Zahl oder einen String beschränkt. Auch Arrays können als Key
dienen (in der JSON-Notation mit [] dargestellt): emit([doc.name,doc.marken],1) . Das Er-
gebnis:
{["Meier",["Audi","VW"]],1 }
{["Schulze","BMW"],1}
Damit hätten wir den Map-Teil abgedeckt, was aber ist Reduce? Wie es der Name schon
sagt, reduziert die Funktion die Liste, die aus einer Map-Funktion ausgegeben wurde.
Mithilfe einer REDUCE-Funktion können Sie z. B. die Anzahl der Autohäuser pro Stadt
herausfinden. Dazu genügt folgende emit -Funktion: emit(doc.stadt,1) sowie eine Reduce-
Funktion:
function(keys,values) {
return sum(values)
Search WWH ::




Custom Search