MongoDB - ObjectId

Hemos estado usando Id. De objeto de MongoDB en todos los capítulos anteriores. En este capítulo, entenderemos la estructura de ObjectId.

Un ObjectId es un tipo BSON de 12 bytes que tiene la siguiente estructura:

  • Los primeros 4 bytes que representan los segundos desde la época de Unix
  • Los siguientes 3 bytes son el identificador de la máquina
  • Los siguientes 2 bytes constan de process id
  • Los últimos 3 bytes son un valor de contador aleatorio

MongoDB usa ObjectIds como el valor predeterminado de _idcampo de cada documento, que se genera durante la creación de cualquier documento. La compleja combinación de ObjectId hace que todos los campos _id sean únicos.

Creando un nuevo ObjectId

Para generar un nuevo ObjectId, use el siguiente código:

>newObjectId = ObjectId()

La declaración anterior devolvió la siguiente identificación generada de forma única:

ObjectId("5349b4ddd2781d08c09890f3")

En lugar de que MongoDB genere el ObjectId, también puede proporcionar una identificación de 12 bytes:

>myObjectId = ObjectId("5349b4ddd2781d08c09890f4")

Creación de marca de tiempo de un documento

Dado que el _id ObjectId almacena de forma predeterminada la marca de tiempo de 4 bytes, en la mayoría de los casos no es necesario almacenar la hora de creación de ningún documento. Puede obtener la hora de creación de un documento utilizando el método getTimestamp -

>ObjectId("5349b4ddd2781d08c09890f4").getTimestamp()

Esto devolverá la hora de creación de este documento en formato de fecha ISO -

ISODate("2014-04-12T21:49:17Z")

Conversión de ObjectId en cadena

En algunos casos, es posible que necesite el valor de ObjectId en un formato de cadena. Para convertir el ObjectId en una cadena, use el siguiente código:

>newObjectId.str

El código anterior devolverá el formato de cadena del Guid -

5349b4ddd2781d08c09890f3