Database Reference
In-Depth Information
runCommand
Und da wir uns gerade anschauen, wie Methoden funktionieren, wollen wir
auch einen Blick auf die runCommand -Funktion werfen.
> db.runCommand
function (obj) {
if ( typeof obj == "string" ){
var n = {};
n[obj] = 1;
obj = n;
}
return this .getCollection( "$cmd" ).findOne(obj);
}
Wie sich zeigt, ist runCommand ebenfalls ein Wrapper für den Aufruf einer Col-
lection namens $cmd . Sie können jeden Befehl ausführen, indem Sie diese
Collection direkt aufrufen.
> db.$cmd.findOne({ 'count' : 'phones' })
{ "n" : 100000, "ok" :1}
Wir sind ganz tief unten angekommen und sehen, wie Treiber generell mit
dem Mongo-Server kommunizieren.
Umweg
Wir sind diesen Umweg aus zwei Gründen gegangen:
￿ Um Ihnen zu vermitteln, dass ein Großteil der Magie, den Sie in der mongo -
Console anstoßen, auf dem Server und nicht dem Client ausgeführt wird.
Der Client stellt nur praktische Wrapper-Funktionen zur Verfügung.
￿ Wir können dieses Konzept der Ausführung serverseitigen Codes auch
zu unserem Vorteil nutzen und bei MongoDB etwas aufbauen, was den
Stored Procedures von PostgreSQL ähnelt.
Jede JavaScript-Funktion kann in einer speziellen Collection namens sys-
tem.js gespeichert werden. Das ist eine ganz normale Collection und Sie
speichern eine Funktion, indem Sie den Namen als _ id , und das Funktions-
objekt als value verwenden.
> db.system.js.save({
_ id: 'getLast' ,
value: function (collection){
return collection.find({}).sort({ ' _ id' :1}).limit(1)[0]
}
})
Search WWH ::




Custom Search