Database Reference
In-Depth Information
Die group -Funktion ist, genau wie SQLs GROUP BY , mächtig, doch die Mongo-
Implementierung hat auch ihre Kehrseite. Zum einen sind Sie auf ein Ergeb-
nis von 10000 Dokumenten beschränkt. Zum anderen funktioniert group
nicht, wenn Sie Ihre Mongo-Collection aufteilen (Shardinf, was wir morgen
machen werden). Außerdem gibt es flexiblere Möglichkeiten, Queries aufzu-
bauen. Aus diesem und anderen Gründen tauchen wir gleich in die Mon-
goDB-Version von Mapreduce ein. Doch vorher wollen wir auf die Grenzen
zwischen client- und serverseitigen Befehlen eingehen. Dieser Unterschied
hat erhebliche Konsequenzen für Ihre Anwendungen.
Serverseitige Befehle
Wenn Sie die folgende Funktion in der Kommandozeile (oder über einen Trei-
ber) ausführen, würde der Client jede Telefonnummer, also alle 100000, ab-
rufen, und jedes phone-Dokument, eins nach dem anderen, wieder auf dem
Server speichern.
mongo/update_area.js
update _ area = function () {
db.phones.find().forEach(
function (phone) {
phone.components.area++;
phone.display = "+" +
phone.components.country+ "" +
phone.components.area+ "-" +
phone.components.number;
db.phone.update({ _ id : phone. _ id }, phone, false);
}
)
}
Das Mongo db -Objektbietetabereinen eval -Befehl an, der die angegebene
Funktion an den Server übergibt. Dadurch wird das Geschnatter zwischen
Client und Server drastisch reduziert, weil der Code auf dem Server ausge-
führt wird.
> db.eval(update _ area)
Neben der Evaluierung von JavaScript-Funktionen gibt es verschiedene an-
dere eingebaute Mongo-Befehle, die auf dem Server ausgeführt werden, auch
wenn einige nur für die admin-Datenbank genutzt werden können (die Sie
über use admin auswählen).
> use admin
> db.runCommand( "top" )
 
Search WWH ::




Custom Search