Cos'è un MongoDB ObjectId?

Un MongoDB ObjectId è un identificatore univoco di 12 byte (24 caratteri esadecimali) utilizzato come campo _id predefinito per ogni documento in una collection MongoDB. La sua struttura non è casuale — codifica informazioni significative. I primi quattro byte memorizzano un timestamp Unix che rappresenta il secondo in cui l'ObjectId è stato creato. I byte rimanenti contengono un valore casuale e un contatore incrementale per garantire l'unicità anche quando più documenti vengono inseriti nello stesso secondo sulla stessa macchina.

Poiché il timestamp di creazione è incorporato direttamente nell'identificatore, è possibile determinare esattamente quando un documento è stato creato senza memorizzare un campo createdAt separato.

Come viene incorporato il timestamp

Un ObjectId come 507f1f77bcf86cd799439011 si scompone come segue:

Byte Caratteri esadecimali Scopo
1–4 507f1f77 Timestamp Unix (secondi dall'epoch)
5–9 bcf86cd799 Valore casuale (univoco per macchina/processo)
10–12 439011 Contatore incrementale

Convertendo i primi otto caratteri esadecimali 507f1f77 in decimale si ottiene 1350844279, che corrisponde a 2012-10-21T21:17:59.000Z.

Descrizione dello strumento

Questo strumento estrae il timestamp incorporato da qualsiasi MongoDB ObjectId valido e lo visualizza in più formati di data. Incolla un ObjectId e visualizza immediatamente la data ISO 8601, la data UTC, la data locale e il timestamp Unix grezzo — senza connessione al database né codice.

Esempi

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

Funzionalità

  • Estrazione immediata: I risultati appaiono mentre si digita — nessun clic su pulsanti richiesto
  • Formati multipli: Visualizza ISO 8601, UTC, data/ora locale e timestamp Unix
  • Validazione dell'input: Rifiuta qualsiasi valore che non sia una stringa esadecimale valida di 24 caratteri
  • Nessuna dipendenza: Funziona interamente nel browser senza chiamate al server o librerie esterne
  • Output pronto per la copia: Ogni campo di output può essere copiato singolarmente

Casi d'uso

  • Debugging: Verifica rapidamente quando un documento è stato inserito senza interrogare il database
  • Auditing: Verifica i timestamp di creazione in liste di ObjectId esportate o file di log
  • Analisi forense: Determina l'età dei record durante la migrazione dei dati o l'analisi di un incidente

Come funziona

  1. Lo strumento prende i primi 8 caratteri esadecimali dell'ObjectId.
  2. Li interpreta come un intero esadecimale a 32 bit big-endian per ottenere il timestamp Unix in secondi.
  3. Moltiplica per 1000 e lo passa a un oggetto JavaScript Date.
  4. Formatta la data risultante in ISO 8601, stringa UTC, stringa con supporto locale e secondi grezzi.

Limitazioni

  • Viene estratto solo il timestamp di creazione. Le porzioni casuale e del contatore dell'ObjectId non vengono decodificate perché non contengono dati significativi per l'utente.
  • Gli ObjectId generati con un timestamp personalizzato o pari a zero restituiranno una data valida ma potenzialmente fuorviante.
  • Il formato della data locale dipende dalle impostazioni della lingua del browser.

FAQ

Posso estrarre una data da qualsiasi MongoDB ObjectId? Sì. Ogni MongoDB ObjectId standard — che sia generato dal driver MongoDB, da Mongoose, da mongosh o da strumenti come Faker.js — contiene un timestamp valido nei suoi primi quattro byte.

È lo stesso del campo createdAt? Solo se l'ObjectId è stato generato al momento dell'inserimento (comportamento predefinito). Se è stato fornito manualmente un ObjectId personalizzato, il timestamp incorporato potrebbe differire dall'effettivo momento di creazione.

Funziona con ObjectId di versioni precedenti di MongoDB? Sì. Il prefisso timestamp di 4 byte fa parte della specifica ObjectId sin dalla versione iniziale di MongoDB. L'unica modifica nel tempo ha riguardato i byte centrali (ID macchina vs. valore casuale), che questo strumento non decodifica.