Vad är ett MongoDB ObjectId?

Ett MongoDB ObjectId är en 12-byte (24 hex-tecken) unik identifierare som används som standardfältet _id för varje dokument i en MongoDB-samling. Dess struktur är inte slumpmässig — den kodar meningsfull information. De första fyra byten lagrar en Unix-tidsstämpel som representerar sekunden då ObjectId skapades. De återstående byten innehåller ett slumpmässigt värde och en ökande räknare för att garantera unikhet även när flera dokument infogas under samma sekund på samma maskin.

Eftersom skapandetidsstämpeln är inbakad direkt i identifieraren kan du avgöra exakt när ett dokument skapades utan att lagra ett separat createdAt-fält.

Hur tidsstämpeln är inbäddad

Ett ObjectId som 507f1f77bcf86cd799439011 bryts ned enligt följande:

Bytes Hex-tecken Syfte
1–4 507f1f77 Unix-tidsstämpel (sekunder sedan epoch)
5–9 bcf86cd799 Slumpmässigt värde (unikt per maskin/process)
10–12 439011 Ökande räknare

Att konvertera de första åtta hex-tecknen 507f1f77 till decimal ger 1350844279, vilket motsvarar 2012-10-21T21:17:59.000Z.

Verktygets beskrivning

Det här verktyget extraherar den inbäddade tidsstämpeln från ett giltigt MongoDB ObjectId och visar den i flera datumformat. Klistra in ett ObjectId och se omedelbart ISO 8601-datumet, UTC-datumet, lokalt datum och den råa Unix-tidsstämpeln — ingen databasanslutning eller kod krävs.

Exempel

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

Funktioner

  • Omedelbar extrahering: Resultaten visas medan du skriver — inga knapptryckningar krävs
  • Flera format: Visar ISO 8601, UTC, lokalt datum/tid och Unix-tidsstämpel
  • Indatavalidering: Avvisar allt som inte är en giltig hex-sträng med 24 tecken
  • Inga beroenden: Körs helt i webbläsaren utan serveranrop eller externa bibliotek
  • Kopieringsklart resultat: Varje utdatafält kan kopieras individuellt

Användningsområden

  • Felsökning: Kontrollera snabbt när ett dokument infogades utan att fråga databasen
  • Granskning: Verifiera skapandetidsstämplar i exporterade ObjectId-listor eller loggfiler
  • Forensik: Fastställ åldern på poster vid datamigrering eller incidentutredning

Hur det fungerar

  1. Verktyget tar de första 8 hex-tecknen i ObjectId.
  2. Tolkar dem som ett 32-bitars big-endian hexadecimalt heltal för att få Unix-tidsstämpeln i sekunder.
  3. Multiplicerar med 1000 och skickar det till ett JavaScript Date-objekt.
  4. Formaterar det resulterande datumet till ISO 8601, UTC-sträng, locale-anpassad sträng och råa sekunder.

Begränsningar

  • Endast skapandetidsstämpeln extraheras. De slumpmässiga delarna och räknardelen av ObjectId avkodas inte eftersom de inte innehåller användarmeningsfull data.
  • ObjectIds som genererats med en anpassad eller noll-tidsstämpel returnerar ett giltigt men potentiellt missvisande datum.
  • Det lokala datumformatet beror på din webbläsares locale-inställningar.

Vanliga frågor

Kan jag extrahera ett datum från vilket MongoDB ObjectId som helst? Ja. Varje standard MongoDB ObjectId — oavsett om det genererats av MongoDB-drivern, Mongoose, mongosh eller verktyg som Faker.js — innehåller en giltig tidsstämpel i sina första fyra bytes.

Är detta samma sak som fältet createdAt? Endast om ObjectId genererades vid infogningstillfället (standardbeteendet). Om ett anpassat ObjectId angavs manuellt kan den inbäddade tidsstämpeln skilja sig från den faktiska skapandetiden.

Fungerar detta med ObjectIds från äldre MongoDB-versioner? Ja. Det 4-byte långa tidsstämpelprefixet har varit en del av ObjectId-specifikationen sedan MongoDB:s första release. Den enda förändringen över tid har skett i de mellersta byten (maskin-ID kontra slumpmässigt värde), vilket det här verktyget inte avkodar.