Database Reference
In-Depth Information
mongo/reduce_2.js
reduce =
function
(key, values) {
var
total = 0;
for
(
var
i=0; i<values.length; i++) {
var
data = values[i];
if
(
'total'
in
data) {
total += data.total;
}
else
{
total += data.count;
}
}
return
{ total : total };
}
Allerdings hat Mongo vorausgesehen, dass Sie einige abschließende Ände-
rungen vornehmen, etwa ein Feld umbenennen oder einige andere Berech-
nungen durchführen müssen. Wenn Sie das Ausgabefeld tatsächlich
total
nennen müssen, können Sie eine
finalize()
-Funktion implementieren, die
genauso funktioniert wie die
finalize
-Funktion unter
group()
.
Was wir am zweiten Tag gelernt haben
Am zweiten Tag haben wir unser Query-Arsenal um aggregierte Queries er-
weitert:
count()
,
distinct()
und schließlich
group()
. Um die Antwortzeiten
dieser Queries zu beschleunigen, haben wir die Indexierungsoptionen von
MongoDB genutzt. Wenn noch mehr Leistung gefordert ist, steht das allge-
genwärtige
mapReduce()
zur Verfügung.
Tag 2: Selbststudium
Finden Sie heraus
1. Einen Kurzbefehl für Admin-Befehle.
2. Die Online-Dokumentation für Queries und Cursor.
3. Die MongoDB-Dokumentation für Mapreduce.
4. Untersuchen Sie über die JavaScript-Schnittstelle den Code für drei Col-
lection-Funktionen:
help()
,
findOne()
und
stats()
.
Machen Sie Folgendes
1. Implementieren Sie eine finalize-Methode, die „count“ als „total“ ausgibt.
2. Installieren Sie einen Mongo-Treiber für eine Sprache Ihrer Wahl und
stellen Sie damit die Verbindung zur Datenbank her. Befüllen Sie darüber
eine Collection und indexieren Sie eines der Felder.