Database Reference
In-Depth Information
Vielleicht ist Ihnen aufgefallen, dass die JSON-Ausgabe der von uns neu
eingefügten Stadt ein
_
id
-Feld namens
ObjectId
enthält. Das ähnelt dem
SERIAL
-Inkrement eines numerischen Primärschlüssels bei PostgreSQL. Die
ObjectId
ist immer 12 Bytes lang und besteht aus einem Zeitstempel, der ID
des Client-Rechners, der ID des Client-Prozesses und einem drei Byte großen
inkrementierten Zähler. Das Byte-Layout ist in Abbildung 21,
Beispiel für ein
ObjectId-Layout
zu sehen.
4d 0a d9 75
bb 30 77 32 66 f3
9f
e3
0
1
2
3
4
5
6
7 8
pid
9
10 11
inc
time
mid
Abbildung 21: Beispiel für ein ObjectId-Layout
Das Gute an diesem Autonummierungsschema ist, dass jeder Prozess auf
jedem Rechner seine eigene ID-Generierung handhaben kann, ohne mit an-
deren
mongod
-Instanzen zu kollidieren. Diese Design-Entscheidung gibt einen
Hinweis auf Mongos verteilte Natur.
JavaScript
Mongos Muttersprache ist JavaScript, egal ob komplexe Dinge wie Mapreduce-
Queries oder etwas so Einfaches wie um Hilfe zu fragen.
> db.help()
> db.towns.help()
Diese Befehle führen die Funktionen auf, die es für das gegebene Objekt gibt.
db
ist ein JavaScript-Objekt mit Informationen über die aktuelle Datenbank.
db.x
ist ein JavaScript-Objekt, das eine Collection (namens
x
) repräsentiert.
Befehle sind einfach JavaScript-Funktionen.
>
typeof
db
object
>
typeof
db.towns
object
>
typeof
db.towns.insert
function
Wenn Sie den Quellcode einer Funktion untersuchen wollen, rufen Sie sie
einfach ohne Parameter oder Klammern auf (denken Sie mehr an Python als
an Ruby).