Mis on MongoDB ObjectId?

MongoDB ObjectId on 12-baidine (24 heksadetsimaalse tähemärgiga) unikaalne identifikaator, mida kasutatakse vaikimisi _id väljana iga dokumendi jaoks MongoDB kollektsioonis. Selle struktuur ei ole juhuslik — see kodeerib sisukat teavet. Esimesed neli baiti salvestavad Unix ajatempli, mis tähistab sekundit, mil ObjectId loodi. Ülejäänud baidid sisaldavad juhuslikku väärtust ja kasvavat loendurit, et tagada unikaalsus isegi siis, kui mitu dokumenti lisatakse samal sekundil samasse masinasse.

Kuna loomise ajatempel on identifikaatorisse otse sisse kodeeritud, saate täpselt määrata, millal dokument loodi, ilma eraldi createdAt välja salvestamata.

Kuidas ajatempel on sisse kodeeritud

ObjectId nagu 507f1f77bcf86cd799439011 jaguneb järgmiselt:

Baidid Heksadetsimaalse tähemärgid Eesmärk
1–4 507f1f77 Unix ajatempel (sekundid algusajast)
5–9 bcf86cd799 Juhuslik väärtus (unikaalne masina/protsessi kohta)
10–12 439011 Kasvav loendur

Esimese kaheksa heksadetsimaalse tähemärgi 507f1f77 teisendamine kümnendarvuks annab 1350844279, mis vastab 2012-10-21T21:17:59.000Z.

Tööriista kirjeldus

See tööriist eraldab manustatud ajatempli mis tahes kehtivast MongoDB ObjectId-st ja kuvab selle mitmes kuupäevavormingus. Kleepige ObjectId ja vaadake koheselt ISO 8601 kuupäeva, UTC kuupäeva, kohalikku kuupäeva ja töötlemata Unix ajatemplit — andmebaasi ühendust ega koodi pole vaja.

Näited

Sisend ObjectId Eraldatud kuupäev (UTC)
507f1f77bcf86cd799439011 2012-10-21T21:17:59.000Z
65a1fc2b0000000000000000 2024-01-13T04:44:27.000Z
000000000000000000000000 1970-01-01T00:00:00.000Z

Funktsioonid

  • Kohene eraldamine: Tulemused ilmuvad kirjutamise ajal — nupuvajutusi pole vaja
  • Mitu vormingut: Kuvab ISO 8601, UTC, kohaliku kuupäeva/kellaaja ja Unix ajatempli
  • Sisendi valideerimine: Lükkab tagasi kõik, mis ei ole kehtiv 24-tähemärgiline heksadetsimaalstring
  • Sõltuvusteta: Töötab täielikult brauseris ilma serveri päringute või väliste teekideta
  • Kopeerimiseks valmis väljund: Iga väljundvälja saab eraldi kopeerida

Kasutusjuhud

  • Silumine: Kontrollige kiiresti, millal dokument lisati, ilma andmebaasi pärimata
  • Auditeerimine: Kontrollige loomise ajatempleid eksporditud ObjectId loendites või logifailides
  • Kohtuekspertiis: Määrake kirjete vanus andmete migreerimise või intsidendi uurimise käigus

Kuidas see töötab

  1. Tööriist võtab ObjectId esimesed 8 heksadetsimaalset tähemärki.
  2. Parsib need 32-bitise big-endian heksadetsimaalse täisarvuna, et saada Unix ajatempel sekundites.
  3. Korrutab 1000-ga ja edastab selle JavaScript Date objektile.
  4. Vormindab saadud kuupäeva ISO 8601, UTC stringi, lokaaditeadliku stringi ja töötlemata sekunditena.

Piirangud

  • Eraldatakse ainult loomise ajatempel. ObjectId juhuslikku ja loenduri osa ei dekodeerita, kuna need ei sisalda kasutajale mõttekat teavet.
  • Kohandatud või nullajatempliga genereeritud ObjectId-d tagastavad kehtiva, kuid potentsiaalselt eksitava kuupäeva.
  • Kohalik kuupäevavorming sõltub teie brauseri lokaadisätetest.

KKK

Kas saan eraldada kuupäeva mis tahes MongoDB ObjectId-st? Jah. Iga standardne MongoDB ObjectId — olgu see genereeritud MongoDB driver'i, Mongoose'i, mongosh-i või selliste tööriistade nagu Faker.js poolt — sisaldab oma esimeses neljas baidis kehtivat ajatemplit.

Kas see on sama mis createdAt väli? Ainult siis, kui ObjectId genereeriti lisamise ajal (vaikimisi). Kui kohandatud ObjectId esitati käsitsi, võib manustatud ajatempel tegelikust loomisajast erineda.

Kas see töötab vanemate MongoDB versioonide ObjectId-dega? Jah. 4-baidine ajatempli prefiks on olnud ObjectId spetsifikatsiooni osa alates MongoDB esialgsest väljalaskmisest. Ainus muutus aja jooksul on olnud keskmistes baitides (masina ID vs. juhuslik väärtus), mida see tööriist ei dekodeeri.