Database Reference
In-Depth Information
Der top -Befehl gibt Details zum Zugriff auf alle Collections des Servers aus.
> use book
> db.listCommands()
Wenn Sie listCommands() ausführen, werden Sie viele der von uns genutz-
ten Befehle sehen. Tatsächlich lassen sich viele gängige Befehle über die
runCommand -Methode ausführen, etwa das Zählen der Telefonnummern, doch
die Ausgabe ist etwas anders.
> db.runCommand({ "count" : "phones" })
{ "n" : 100000, "ok" :1}
Die Zahl ( n ) wird korrekt (100000) zurückgegeben, doch das Objekt enthält
ein ok -Feld. Das liegt daran, dass db.phones.count eine Wrapper-Funktion
ist, die unserer Bequemlichkeit zuliebe vom JavaScript-Interface der Shell
erzeugt wurde, während runCommand den Zähler auf dem Server ausführt.
Erinnern Sie sich daran, dass wir Detektiv spielen und uns die Implementie-
rung von count ansehen können, indem wir die Klammern weglassen.
> db.phones.count
function (x) {
return this .find(x).count();
}
Interessant! collection.count ist nur ein Wrapper für den Aufruf von count
über die Ergebnisse von find (das selbst nur ein Wrapper auf ein natives Que-
ry-Objekt ist, der einen Cursor zurückgibt, der auf das Ergebnis verweist).
Wenn wir uns nun diese Query ansehen...
> db.phones.find().count
sehen wir eine viel größere Funktion (zu groß, um sie hier abzubilden). Schaut
man sich den Code an, findet man nach einem ganzen Haufen Setup Zeilen
wie diese:
var res = this . _ db.runCommand(cmd);
if (res && res.n != null) {
return res.n;
}
Sehr interessant! count führt runCommand aus und gibt den Wert des n -Feldes
zurück.
Search WWH ::




Custom Search