Latest web development tutorials

MongoDB ObjectId

In den ersten Kapiteln haben wir MongoDB Objekt Id (ObjectId) verwendet.

In diesem Abschnitt werden wir die Struktur des ObjectId aussehen.

ObjectId BSON ist ein 12-Byte-Datentyp, hat folgendes Format:

  • Die ersten vier Bytes Zeitstempel
  • Die nächsten drei Bytes von Maschinencode ist
  • Unmittelbar zwei Bytes durch die Prozess-ID (PID), die aus
  • Die letzten drei Bytes der Zufallszahlen.

MongoDB Dokumente gespeichert muss es eine "_id" Schlüssel sein. Der Wert dieses Schlüssels von jedem Typ sein kann, ist die Standard-ObjectId Objekt.

In einem Satz in jedem Dokument einen einzigartigen "_id" Wert hat, um die Sammlung zu gewährleisten innerhalb jedes Dokument eindeutig identifiziert werden kann.

MongoDB verwendet ObjectId, aber nicht der Hauptgrund, andere eher konventionellen Ansatz (wie Auto-Increment Primärschlüssel), weil der Primärschlüsselwert automatisch Synchronisation über mehrere Server hinweg erhöht wird, ist auch zeitaufwendig und mühsam.


Erstellen Sie ein neues ObjectId

Verwenden Sie den folgenden Code ein neues ObjectId zu generieren:

>newObjectId = ObjectId()

Die obige Anweisung gibt die folgenden eindeutig erzeugt ID:

ObjectId("5349b4ddd2781d08c09890f3")

Sie können auch die erzeugte ID anstelle von MongoDB verwenden, um automatisch generierte ObjectId:

>myObjectId = ObjectId("5349b4ddd2781d08c09890f4")

Schöpfung Zeitstempel Dokumente

Da ObjectId in vier Bytes der Zeitstempel gespeichert, so dass Sie brauchen nicht den Zeitstempel-Feld für Ihre Dokumente zu speichern, können Sie Zeit erstellen können die Dokumente von getTimestamp Funktion zu erhalten:

>ObjectId("5349b4ddd2781d08c09890f4").getTimestamp()

Der obige Code wird das ISO-Format Dokumentenerstellung Zeit zurück:

ISODate("2014-04-12T21:49:17Z")

ObjectId umgewandelt in einen String

In einigen Fällen müssen Sie einen String ObjectId Format zu konvertieren. Sie können den folgenden Code verwenden:

>new ObjectId().str

Der obige Code wird die Zeichenfolge Guid Format zurück ::

5349b4ddd2781d08c09890f3