Was ist eine MongoDB ObjectId?

Eine MongoDB ObjectId ist ein 12-Byte (24 Hex-Zeichen) eindeutiger Bezeichner, der als Standard-_id-Feld für jedes Dokument in einer MongoDB-Collection verwendet wird. Ihre Struktur ist nicht zufällig – sie kodiert aussagekräftige Informationen. Die ersten vier Bytes speichern einen Unix-Timestamp, der die Sekunde repräsentiert, in der die ObjectId erstellt wurde. Die verbleibenden Bytes enthalten einen Zufallswert und einen inkrementierenden Zähler, um Eindeutigkeit zu gewährleisten, selbst wenn mehrere Dokumente in derselben Sekunde auf demselben Rechner eingefügt werden.

Da der Erstellungs-Timestamp direkt in den Bezeichner eingebettet ist, können Sie genau bestimmen, wann ein Dokument erstellt wurde, ohne ein separates createdAt-Feld zu speichern.

Wie der Timestamp eingebettet wird

Eine ObjectId wie 507f1f77bcf86cd799439011 lässt sich wie folgt aufschlüsseln:

Bytes Hex-Zeichen Zweck
1–4 507f1f77 Unix-Timestamp (Sekunden seit Epoch)
5–9 bcf86cd799 Zufallswert (eindeutig pro Maschine/Prozess)
10–12 439011 Inkrementierender Zähler

Die Umwandlung der ersten acht Hex-Zeichen 507f1f77 in eine Dezimalzahl ergibt 1350844279, was 2012-10-21T21:17:59.000Z entspricht.

Beschreibung des Tools

Dieses Tool extrahiert den eingebetteten Timestamp aus jeder gültigen MongoDB ObjectId und zeigt ihn in mehreren Datumsformaten an. Fügen Sie eine ObjectId ein und sehen Sie sofort das ISO 8601-Datum, das UTC-Datum, das lokale Datum und den rohen Unix-Timestamp – ohne Datenbankverbindung oder Code.

Beispiele

Eingabe ObjectId Extrahiertes Datum (UTC)
507f1f77bcf86cd799439011 2012-10-21T21:17:59.000Z
65a1fc2b0000000000000000 2024-01-13T04:44:27.000Z
000000000000000000000000 1970-01-01T00:00:00.000Z

Funktionen

  • Sofortige Extraktion: Ergebnisse erscheinen während der Eingabe – kein Klicken auf Schaltflächen erforderlich
  • Mehrere Formate: Zeigt ISO 8601, UTC, lokales Datum/Uhrzeit und Unix-Timestamp an
  • Eingabevalidierung: Lehnt alles ab, was kein gültiger 24-Zeichen-Hex-String ist
  • Keine Abhängigkeiten: Läuft vollständig im Browser ohne Server-Aufrufe oder externe Bibliotheken
  • Kopierfähige Ausgabe: Jedes Ausgabefeld kann einzeln kopiert werden

Anwendungsfälle

  • Debugging: Schnell prüfen, wann ein Dokument eingefügt wurde, ohne die Datenbank abzufragen
  • Auditierung: Erstellungs-Timestamps in exportierten ObjectId-Listen oder Log-Dateien überprüfen
  • Forensik: Das Alter von Datensätzen bei der Datenmigration oder Vorfallsuntersuchung bestimmen

Funktionsweise

  1. Das Tool nimmt die ersten 8 Hex-Zeichen der ObjectId.
  2. Parst sie als 32-Bit Big-Endian-Hexadezimalzahl, um den Unix-Timestamp in Sekunden zu erhalten.
  3. Multipliziert diesen mit 1000 und übergibt ihn an ein JavaScript-Date-Objekt.
  4. Formatiert das resultierende Datum in ISO 8601, UTC-String, lokalisierungsabhängigen String und rohe Sekunden.

Einschränkungen

  • Es wird nur der Erstellungs-Timestamp extrahiert. Die Zufalls- und Zähleranteile der ObjectId werden nicht dekodiert, da sie keine für den Benutzer relevanten Daten enthalten.
  • ObjectIds, die mit einem benutzerdefinierten oder Null-Timestamp generiert wurden, geben ein gültiges, aber möglicherweise irreführendes Datum zurück.
  • Das lokale Datumsformat hängt von den Spracheinstellungen Ihres Browsers ab.

FAQ

Kann ich ein Datum aus jeder MongoDB ObjectId extrahieren? Ja. Jede standardmäßige MongoDB ObjectId – ob vom MongoDB-driver, Mongoose, mongosh oder Tools wie Faker.js generiert – enthält einen gültigen Timestamp in ihren ersten vier Bytes.

Ist das dasselbe wie das createdAt-Feld? Nur wenn die ObjectId zum Zeitpunkt des Einfügens generiert wurde (der Standard). Wenn eine benutzerdefinierte ObjectId manuell angegeben wurde, kann der eingebettete Timestamp von der tatsächlichen Erstellungszeit abweichen.

Funktioniert das mit ObjectIds aus älteren MongoDB-Versionen? Ja. Das 4-Byte-Timestamp-Präfix ist seit der ersten Veröffentlichung von MongoDB Teil der ObjectId-Spezifikation. Die einzige Änderung im Laufe der Zeit betrifft die mittleren Bytes (Maschinen-ID vs. Zufallswert), die dieses Tool nicht dekodiert.