MongoDB ObjectId -päivämääräpoimija
Pura ja dekoodaa MongoDB ObjectId:hen upotettu aikaleima nähdäksesi, milloin dokumentti on luotu
Syöte
Tuloste
Lue lisää
Mikä on MongoDB ObjectId?
MongoDB ObjectId on 12-tavuinen (24 heksamerkkiä) yksilöllinen tunniste, jota käytetään oletuksena _id-kenttänä jokaisessa MongoDB-kokoelman dokumentissa. Sen rakenne ei ole satunnainen — se sisältää merkityksellistä tietoa. Ensimmäiset neljä tavua tallentavat Unix-aikaleiman, joka kuvaa sekuntia, jolloin ObjectId luotiin. Loput tavut sisältävät satunnaisen arvon ja kasvavan laskurin, jotka takaavat yksilöllisyyden myös silloin, kun useita dokumentteja lisätään samalla sekunnilla samalla koneella.
Koska luomisaikaleima on suoraan sisäänrakennettuna tunnisteeseen, voit selvittää tarkalleen, milloin dokumentti luotiin ilman erillisen createdAt-kentän tallentamista.
Kuinka aikaleima on upotettu
ObjectId, kuten 507f1f77bcf86cd799439011, jakautuu seuraavasti:
| Tavut | Heksamerkit | Tarkoitus |
|---|---|---|
| 1–4 | 507f1f77 |
Unix-aikaleima (sekuntia epoch-hetkestä) |
| 5–9 | bcf86cd799 |
Satunnainen arvo (yksilöllinen per kone/prosessi) |
| 10–12 | 439011 |
Kasvava laskuri |
Muuntamalla ensimmäiset kahdeksan heksamerkkiä 507f1f77 desimaaliksi saadaan 1350844279, joka vastaa 2012-10-21T21:17:59.000Z.
Työkalun kuvaus
Tämä työkalu poimii upotetun aikaleiman mistä tahansa kelvollisesta MongoDB ObjectId:stä ja näyttää sen useissa päivämäärämuodoissa. Liitä ObjectId ja näe välittömästi ISO 8601 -päivämäärä, UTC-päivämäärä, paikallinen päivämäärä ja raaka Unix-aikaleima — ilman tietokantayhteyttä tai koodia.
Esimerkit
| Syöte ObjectId | Poimittu päivämäärä (UTC) |
|---|---|
507f1f77bcf86cd799439011 |
2012-10-21T21:17:59.000Z |
65a1fc2b0000000000000000 |
2024-01-13T04:44:27.000Z |
000000000000000000000000 |
1970-01-01T00:00:00.000Z |
Ominaisuudet
- Välitön poiminta: Tulokset näkyvät kirjoittaessasi — painikkeen napsautusta ei tarvita
- Useita muotoja: Näyttää ISO 8601-, UTC-, paikallisen päivämäärän/ajan ja Unix-aikaleiman
- Syötteen validointi: Hylkää kaiken, mikä ei ole kelvollinen 24-merkkinen heksadesimaalinen string
- Ei riippuvuuksia: Toimii kokonaan selaimessa ilman palvelinkutsuja tai ulkoisia kirjastoja
- Kopioitavat tulokset: Jokainen tulokenttä voidaan kopioida erikseen
Käyttötapaukset
- Debuggaus: Tarkista nopeasti, milloin dokumentti lisättiin ilman tietokantakyselyä
- Auditointi: Varmista luomisaikaleimoja viedyistä ObjectId-listoista tai lokitiedostoista
- Forensiikka: Selvitä tietueiden ikä tietojen siirron tai tapaustutkimuksen aikana
Kuinka se toimii
- Työkalu ottaa ObjectId:n ensimmäiset 8 heksamerkkiä.
- Jäsentää ne 32-bittiseksi big-endian-heksadesimaaliluvuksi saadakseen Unix-aikaleiman sekunneissa.
- Kertoo luvun 1000:lla ja välittää sen JavaScript
Date-objektille. - Muotoilee tuloksena olevan päivämäärän ISO 8601-, UTC string-, aluekohtaiseksi stringiksi ja raakoiksi sekunneiksi.
Rajoitukset
- Ainoastaan luomisaikaleima poimitaan. ObjectId:n satunnaisia osia ja laskuriosia ei pureta, koska ne eivät sisällä käyttäjälle merkityksellistä tietoa.
- ObjectId:t, jotka on luotu mukautetulla tai nolla-aikaleimalla, palauttavat kelvollisen mutta mahdollisesti harhaanjohtavan päivämäärän.
- Paikallinen päivämäärämuoto riippuu selaimesi aluekohtaisista asetuksista.
UKK
Voinko poimia päivämäärän mistä tahansa MongoDB ObjectId:stä?
Kyllä. Jokainen tavallinen MongoDB ObjectId — olipa se luotu MongoDB driverilla, Mongoosella, mongosh-työkalulla tai esimerkiksi Faker.js:llä — sisältää kelvollisen aikaleiman ensimmäisissä neljässä tavussaan.
Onko tämä sama kuin createdAt-kenttä?
Vain jos ObjectId luotiin lisäyshetkellä (oletustoiminta). Jos mukautettu ObjectId on annettu manuaalisesti, upotettu aikaleima saattaa poiketa todellisesta luomisajasta.
Toimiiko tämä vanhempien MongoDB-versioiden ObjectId:iden kanssa? Kyllä. 4-tavuinen aikaleimaetuliite on ollut osa ObjectId-määrittelyä MongoDB:n ensimmäisestä julkaisusta lähtien. Ainoa muutos ajan myötä on ollut keskimmäisissä tavuissa (koneen tunniste vs. satunnainen arvo), joita tämä työkalu ei pura.