Qu'est-ce qu'un ObjectId MongoDB ?

Un ObjectId MongoDB est un identifiant unique de 12 octets (24 caractères hexadécimaux) utilisé comme champ _id par défaut pour chaque document d'une collection MongoDB. Sa structure n'est pas aléatoire — elle encode des informations significatives. Les quatre premiers octets stockent un horodatage Unix représentant la seconde à laquelle l'ObjectId a été créé. Les octets restants contiennent une valeur aléatoire et un compteur incrémental pour garantir l'unicité, même lorsque plusieurs documents sont insérés dans la même seconde sur la même machine.

Étant donné que l'horodatage de création est directement intégré dans l'identifiant, vous pouvez déterminer exactement quand un document a été créé sans stocker un champ createdAt séparé.

Comment l'horodatage est intégré

Un ObjectId tel que 507f1f77bcf86cd799439011 se décompose comme suit :

Octets Caractères hexadécimaux Rôle
1–4 507f1f77 Horodatage Unix (secondes depuis l'époque)
5–9 bcf86cd799 Valeur aléatoire (unique par machine/processus)
10–12 439011 Compteur incrémental

La conversion des huit premiers caractères hexadécimaux 507f1f77 en décimal donne 1350844279, ce qui correspond à 2012-10-21T21:17:59.000Z.

Description de l'outil

Cet outil extrait l'horodatage intégré de tout ObjectId MongoDB valide et l'affiche dans plusieurs formats de date. Collez un ObjectId et visualisez instantanément la date ISO 8601, la date UTC, la date locale et l'horodatage Unix brut — sans connexion à une base de données ni code requis.

Exemples

ObjectId en entrée Date extraite (UTC)
507f1f77bcf86cd799439011 2012-10-21T21:17:59.000Z
65a1fc2b0000000000000000 2024-01-13T04:44:27.000Z
000000000000000000000000 1970-01-01T00:00:00.000Z

Fonctionnalités

  • Extraction instantanée : Les résultats s'affichent au fur et à mesure de la saisie — aucun clic sur un bouton n'est nécessaire
  • Formats multiples : Affiche l'ISO 8601, l'UTC, la date/heure locale et l'horodatage Unix
  • Validation des entrées : Rejette tout ce qui n'est pas une chaîne hexadécimale valide de 24 caractères
  • Aucune dépendance : Fonctionne entièrement dans le navigateur, sans appels serveur ni bibliothèques externes
  • Sortie prête à copier : Chaque champ de sortie peut être copié individuellement

Cas d'utilisation

  • Débogage : Vérifiez rapidement quand un document a été inséré sans interroger la base de données
  • Audit : Vérifiez les horodatages de création dans des listes d'ObjectId exportées ou des fichiers journaux
  • Analyse forensique : Déterminez l'ancienneté des enregistrements lors d'une migration de données ou d'une investigation sur un incident

Fonctionnement

  1. L'outil prend les 8 premiers caractères hexadécimaux de l'ObjectId.
  2. Les analyse en tant qu'entier hexadécimal 32 bits big-endian pour obtenir l'horodatage Unix en secondes.
  3. Multiplie par 1000 et le transmet à un objet JavaScript Date.
  4. Formate la date obtenue en ISO 8601, chaîne UTC, chaîne adaptée aux paramètres régionaux et secondes brutes.

Limitations

  • Seul l'horodatage de création est extrait. Les parties aléatoire et compteur de l'ObjectId ne sont pas décodées car elles ne contiennent pas de données significatives pour l'utilisateur.
  • Les ObjectIds générés avec un horodatage personnalisé ou nul renverront une date valide mais potentiellement trompeuse.
  • Le format de date locale dépend des paramètres régionaux de votre navigateur.

FAQ

Puis-je extraire une date de n'importe quel ObjectId MongoDB ? Oui. Tout ObjectId MongoDB standard — qu'il soit généré par le driver MongoDB, Mongoose, mongosh ou des outils comme Faker.js — contient un horodatage valide dans ses quatre premiers octets.

Est-ce la même chose que le champ createdAt ? Uniquement si l'ObjectId a été généré au moment de l'insertion (comportement par défaut). Si un ObjectId personnalisé a été fourni manuellement, l'horodatage intégré peut différer de l'heure de création réelle.

Cela fonctionne-t-il avec les ObjectIds des anciennes versions de MongoDB ? Oui. Le préfixe d'horodatage de 4 octets fait partie de la spécification ObjectId depuis la version initiale de MongoDB. La seule évolution au fil du temps concerne les octets intermédiaires (identifiant machine vs. valeur aléatoire), que cet outil ne décode pas.