Decodificador de ObjectId y ObjectId a partir de una fecha

Pega un ObjectId, el identificador de 24 caracteres que MongoDB guarda en _id, para ver cuándo se creó y qué contienen sus otras partes. En el segundo bloque, escribe una fecha y obtén el ObjectId más pequeño de ese segundo, listo para buscar documentos creados después.

Decodificar un ObjectId

Creado (UTC)2012-10-17T21:13:27Z
Tiempo Unix, s
1350508407
Valor aleatorio (5 bytes)
bcf86cd799
Contador (3 bytes)
4427793 (0x439011)

ObjectId a partir de una fecha

2026-01-01, 2026-01-01T12:30:00Z, con +01:00 para la zona horaria, o segundos Unix; sin zona se toma UTC
ObjectId6955b9000000000000000000
Segundo (UTC)
2026-01-01T00:00:00Z
Consulta de documentos creados desde entonces
{ _id: { $gte: ObjectId("6955b9000000000000000000") } }

Funciona en tu navegador: nada de lo que escribes se envía a ningún sitio.

Cómo se usa

  1. Pega un ObjectId en el primer cuadro. Debajo aparecen la fecha de creación, los segundos Unix, el valor aleatorio y el contador.
  2. Para el sentido contrario, escribe una fecha en el segundo bloque: obtienes un ObjectId y una consulta lista sobre _id.
  3. Copia lo que necesites con los botones de copiar.

Cómo funciona

Los primeros 8 dígitos hexadecimales son la fecha de creación en segundos desde 1970-01-01 UTC, con el byte más significativo primero. Los 10 siguientes son el valor aleatorio del proceso y los últimos 6, el contador.

Para una fecha, la herramienta toma sus segundos Unix (sin fracciones), los escribe como 8 dígitos hexadecimales y añade 16 ceros. Ningún identificador real de ese segundo es menor, por eso sirve como límite de un rango.

Ejemplo

507f1f77bcf86cd799439011:

  • 507f1f77 en decimal son 1.350.508.407 segundos, es decir, 2012-10-17T21:13:27Z;
  • bcf86cd799 es el valor aleatorio;
  • 439011 es el contador: 4.427.793 en decimal.

En sentido contrario, 2026-01-01T00:00:00Z son 1.767.225.600 segundos = 6955b900 en hexadecimal, así que su ObjectId es 6955b9000000000000000000.

Consejos

  • Ordenar por _id es casi ordenar por fecha de creación, pero solo al segundo; los identificadores de procesos distintos en el mismo segundo no quedan ordenados por tiempo.
  • Para leer la fecha en código, mongosh tiene ObjectId("…").getTimestamp().
  • Para UUID usa el decodificador de UUID; para identificadores de Twitter o Discord, el decodificador de Snowflake ID.

Preguntas frecuentes

¿Qué hay dentro de un ObjectId?

12 bytes escritos como 24 dígitos hexadecimales: 4 bytes de tiempo Unix en segundos, 5 bytes de un valor aleatorio elegido una vez por proceso y un contador de 3 bytes que empieza en un número aleatorio y aumenta en uno con cada identificador nuevo.

¿La fecha de creación es exacta?

Al segundo, según el reloj de la máquina o del driver que creó el identificador. Normalmente lo crea el driver del cliente, así que es el reloj del cliente, no el del servidor de base de datos.

¿Cómo busco documentos creados después de una fecha?

Usa el ObjectId de esa fecha como límite inferior: db.orders.find({ _id: { $gte: ObjectId("…") } }). Como el tiempo va primero, los ObjectId se ordenan por segundo de creación, y el identificador generado (el tiempo seguido de 16 ceros) es el menor de ese segundo.

¿Puedo saber la máquina o el proceso por un ObjectId?

Ya no. Las versiones antiguas del formato guardaban un identificador de máquina y de proceso; la actual usa un valor aleatorio de 5 bytes por proceso, que solo indica si dos identificadores probablemente salieron del mismo proceso.

¿Puedo pegar ObjectId("…")?

Sí, se quita el envoltorio ObjectId("…") de la consola, y da igual que esté en mayúsculas o minúsculas.

Más en Desarrollo

Todas las herramientas de la categoría: Desarrollo ·Actualizado el 4 de noviembre de 2026

Opciones de privacidad

Google Analytics nos muestra qué herramientas se usan y si funcionan. Puede usar cookies. Tu elección se guarda en este navegador.