Unterschied zwischen ObjectId und $Oid in MongoDB

Bilal Shahid 20 Juni 2023
  1. Merkmale der ObjectID
  2. Unterschied zwischen ObjectID und $oid in MongoDB
  3. Dokument in eine Sammlung mit ObjectID einfügen
  4. Methoden der ObjectID
  5. Abschluss
Unterschied zwischen ObjectId und $Oid in MongoDB

MongoDB speichert alle Datensätze in einzelnen BSON-Dokumenten. Eine Kennung wird bereitgestellt, um jedes der Dokumente eindeutig zu identifizieren.

Die Kennung hilft dem Benutzer, das Dokument eindeutig zu lokalisieren, während er andere Dokumente durchsucht.

Abfragen funktionieren einfach mit Hilfe eines Identifikators und die Ergebnisse werden entsprechend generiert.

In jeder Sammlung hat jedes Dokument ein eindeutiges _id-Feld, das als Primärschlüssel fungiert. Das Standardformat _id ist die ObjectID des Dokuments.

Merkmale der ObjectID

Eine ObjectID fungiert als Identifikator eines einzelnen Dokuments innerhalb einer bestimmten Sammlung. Die ObjectID ist ein 12-Byte-Feld vom Typ BSON.

Die Aufteilung der Felder ist wie folgt:

  1. Unix-Zeitstempel des einzelnen Dokuments wird durch die ersten vier Bytes dargestellt.
  2. Die Maschinen-ID, auf der der MongoDB-Server derzeit ausgeführt wird, wird durch die folgenden drei Bytes dargestellt.
  3. Prozess-ID wird durch die nächsten zwei Bytes dargestellt.
  4. Um die ObjectID zu inkrementieren, werden die letzten drei Bytes reserviert.

Format einer ObjectID

Die ObjectID kann beim Erstellen eines Dokuments festgelegt werden. Es gibt zwei Möglichkeiten, einem Dokument die ObjectID zuzuweisen.

  1. Bei der Erstellung weist der Benutzer dem Dokument selbst die ObjectID zu.
  2. Das Dokument nimmt eine standardmäßige ObjectID an, die ihm vom MongoDB-Server zugewiesen wird.

Die ObjectID ist in folgendem Format definiert:

ObjectId(<hexadecimal>)

Der Parameter <hexadezimal> zur Definition einer ObjectID ist optional. Wenn der Benutzer im Feld _id einen Wert definiert, wird dieser Wert als ObjectID dem Dokument zugewiesen.

Andernfalls stellt der MongoDB-Server dem Dokument eine ID bereit.

Hinweis: Es ist darauf zu achten, dass die vom Benutzer angegebene ObjectID für jedes Dokument innerhalb der Sammlung eindeutig ist.

Unterschied zwischen ObjectID und $oid in MongoDB

Beim MongoDB-Server gibt es keinen Unterschied zwischen einer ObjectID und einer $oid. Die beiden sind nur unterschiedliche Serialisierungsformate, die mit den neueren Shells eingeführt wurden.

Objekt-IDs werden mit Hilfe von $oid des MongoDB-Servers dargestellt. Der Server verwendet Strict MongoDB Extended JSON; Daher werden die Objekt-IDs wie folgt dargestellt:

{ "$oid": "<id>" }

Wie oben gezeigt, kann der Begriff $oid verwendet werden, wenn nach einem bestimmten Dokument gesucht wird. Sie können beim Schreiben von Abfragen $oid verwenden.

Andererseits kann die ObjectID zum Erstellen von Dokumenten verwendet werden. Zusätzlich können die Methoden der ObjectID verwendet werden, um bestimmte Werte aus der 12 Byte langen Objekt-ID zu erhalten.

Kurz gesagt, es gibt keinen großen Unterschied zwischen den beiden Entitäten auf dem MongoDB-Server.

Dokument in eine Sammlung mit ObjectID einfügen

Wie im vorherigen Abschnitt besprochen, nimmt das Feld ObjectID einen optionalen hexadezimalen Parameter an. Wenn bei der Erstellung des Dokuments kein Wert für das Feld _id festgelegt wird, legt der MongoDB-Server einen standardmäßigen, eindeutigen Wert für das Dokument in der Sammlung fest.

Die Syntax zum Einfügen eines einzelnen Dokuments in die Sammlung lautet wie folgt:

db.collectionName.insertOne()

Das Code-Snippet fügt ein Dokument in die Sammlung mit einem vom Server festgelegten Standardwert im Feld _id ein.

Die Syntax zum Einfügen mehrerer Dokumente in die Sammlung lautet wie folgt:

db.collectionName.insertMany()

Das Code-Snippet fügt mehrere Dokumente in die Sammlung mit einem vom Server festgelegten Standardwert im Feld _id ein.

Legen Sie das Feld ObjectID fest

Der Benutzer kann das Feld _id beim Erstellen eines Dokuments festlegen, vorausgesetzt, es ist eindeutig. Die Syntax zum Setzen der ObjectID oder mit anderen Worten $oid lautet wie folgt:

db.collectionname.insertOne({"_id":"1789473"})

Hier ist ein Beispiel für das Setzen einer ObjectID eines Dokuments innerhalb einer Sammlung. Nehmen Sie die folgenden Entitäten an:

  1. Name der Datenbank: officedb
  2. Name der Sammlung: employee_officedb

Verwenden Sie die folgenden Befehle, um ein Dokument auf dem MongoDB-Server zu erstellen:

> use officedb
switched to db officedb
> db.createCollection("employee_officedb")
{ "ok" : 1 }
> db.employee_officedb.insert({ name : "asad", rank : 23})
WriteResult ({ "nInserted" : 1})
> db.employee_officedb.find().pretty()
{
        "_id" : ObjectId ("8e12bn2a0ty562888ab93711"),
        "name" : "asad"
        "rank"  : 23
}

Methoden der ObjectID

Vier Methoden erweitern das Konzept von ObjectID in MongoDB. Jede der Methoden dient einer anderen Funktionalität, wie unten beschrieben.

  1. Die str-Methode: Diese wird verwendet, um die Objekt-ID in einem hexadezimalen Zeichenfolgenformat zu erhalten.
  2. Die Methode ObjectId.getTimestamp() gibt den Zeitstempelteil des Objekts als Datum zurück.
  3. Die Methode ObjectId.valueOf(): Das Hexadezimalformat eines gegebenen String-Literals wird von dieser Methode zurückgegeben.
  4. Die Methode ObjectId.toString(): Diese Methode gibt die Objekt-ID in einem String-Format in JavaScript-Darstellung zurück.

Abschluss

Es gibt einen riesigen Raum, um die ObjectID und $oid auf dem MongoDB-Server zu erkunden. Es gibt keinen großen Unterschied zwischen den beiden, außer in der Darstellung.

Einige Shells verwenden die ObjectID, während andere Shells das $oid verwenden. Daher hängen Datenbearbeitung und -speicherung von der Version der Shell ab, die auf Ihrem Gerät installiert ist.

Verwenden Sie für die Definition von Dokumenten und deren IDs ObjectID. Verwenden Sie andererseits beim Schreiben und Ausführen von Abfragen $oid, um die gesamte Sammlung zu durchsuchen, um das erforderliche Dokument zu finden.

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

Verwandter Artikel - MongoDB ObjectId