Diferencia entre ObjectId y $Oid en MongoDB

Bilal Shahid 20 junio 2023
  1. Características del ObjectID
  2. Diferencia entre ObjectID y $oid en MongoDB
  3. Insertar documento en una colección con ObjectID
  4. Métodos del ObjectID
  5. Conclusión
Diferencia entre ObjectId y $Oid en MongoDB

MongoDB almacena todos los registros de datos en documentos BSON individuales. Se proporciona un identificador para identificar de forma única cada uno de los documentos.

El identificador ayuda al usuario a localizar de forma única el documento mientras busca en otros documentos.

Las consultas funcionan fácilmente con la ayuda de un identificador y los resultados se generan en consecuencia.

En cada colección, cada documento tiene un campo _id único que actúa como su clave principal. El formato predeterminado de _id es el ObjectID del documento.

Características del ObjectID

Un ObjectID actúa como un identificador de un documento individual dentro de una colección particular. El ObjectID es un campo de tipo BSON de 12 bytes.

La división de los campos es la siguiente:

  1. La marca de tiempo de Unix del documento individual está representada por los primeros cuatro bytes.
  2. La ID de la máquina en la que se ejecuta actualmente el servidor MongoDB está representada por los siguientes tres bytes.
  3. El ID del proceso está representado por los siguientes dos bytes.
  4. Para incrementar el ObjectID, se reservan los últimos tres bytes.

Formato de un ObjectID

El ObjectID se puede definir cuando se crea un documento. Hay dos formas de asignar el ObjectID a un documento.

  1. Al momento de la creación, el usuario asigna el ObjectID al documento en sí.
  2. El documento toma un ObjectID predeterminado que le asigna el servidor MongoDB.

El ObjectID se define en el siguiente formato:

ObjectId(<hexadecimal>)

El parámetro <hexadecimal> para definir un ObjectID es opcional. Si el usuario define un valor en el campo _id, ese valor se asigna como un ObjectID al documento.

De lo contrario, el servidor MongoDB proporciona una ID al documento.

Nota: Se debe asegurar que el ObjectID proporcionado por el usuario sea único para cada documento dentro de la colección.

Diferencia entre ObjectID y $oid en MongoDB

No hay diferencia entre un ObjectID y un $oid en el servidor MongoDB. Los dos son solo formatos de serialización diferentes introducidos con los shells más nuevos.

Los ID de objetos se representan con la ayuda del servidor MongoDB de $oid. El servidor utiliza Strict MongoDB Extended JSON; por lo tanto, los ID de objeto se representan de la siguiente manera:

{ "$oid": "<id>" }

Como se muestra arriba, el término $oid se puede utilizar al buscar un documento en particular. Puede usar $oid mientras escribe consultas.

Por otro lado, el ObjectID se puede utilizar para crear documentos. Además, los métodos de ObjectID se pueden utilizar para obtener valores específicos del ID de objeto de 12 bytes de longitud.

En resumen, no hay mucha diferencia entre las dos entidades en el servidor MongoDB.

Insertar documento en una colección con ObjectID

Como se discutió en la sección anterior, el campo ObjectID toma un parámetro hexadecimal opcional. Si no se establece ningún valor para el campo _id en la creación del documento, el servidor MongoDB establece un valor único predeterminado para el documento en la colección.

La sintaxis para insertar un solo documento en la colección es la siguiente:

db.collectionName.insertOne()

El fragmento de código inserta un documento en la colección con un valor predeterminado en el campo _id establecido por el servidor.

La sintaxis para insertar varios documentos en la colección es la siguiente:

db.collectionName.insertMany()

El fragmento de código inserta varios documentos en la colección con un valor predeterminado en el campo _id establecido por el servidor.

Establecer el campo ObjectID

El usuario puede configurar el campo _id al crear un documento, dado que es único. La sintaxis para establecer el ObjectID, o $oid en otras palabras, es la siguiente:

db.collectionname.insertOne({"_id":"1789473"})

Aquí hay un ejemplo de cómo configurar un ObjectID de un documento dentro de una colección. Suponga las siguientes entidades:

  1. Nombre de la Base de Datos: officedb
  2. Nombre de la Colección: employee_officedb

Use los siguientes comandos para crear un documento en el servidor MongoDB:

> use officedb
switched to db officedb
> db.createCollection("employee_officedb")
{ "ok" : 1 }
> db.employee_officedb.insert({ name : "asad", rank : 23})
WriteResult ({ "nInserted" : 1})
> db.employee_officedb.find().pretty()
{
        "_id" : ObjectId ("8e12bn2a0ty562888ab93711"),
        "name" : "asad"
        "rank"  : 23
}

Métodos del ObjectID

Cuatro métodos amplían el concepto de ObjectID en MongoDB. Cada uno de los métodos tiene una funcionalidad diferente, como se describe a continuación.

  1. El método str: se utiliza para obtener el ID del objeto en un formato de cadena hexadecimal.
  2. El método ObjectId.getTimestamp() devuelve la parte de la marca de tiempo del objeto como una fecha.
  3. El método ObjectId.valueOf(): este método devuelve el formato hexadecimal de un literal de cadena dado.
  4. El método ObjectId.toString(): este método devuelve el ID del objeto en un formato de cadena en representación de JavaScript.

Conclusión

Hay un espacio enorme para explorar ObjectID y $oid en el servidor MongoDB. No hay mucha diferencia entre los dos, excepto por la representación.

Algunos shells utilizan el ObjectID, mientras que otros utilizan el $oid. Por lo tanto, la manipulación y el almacenamiento de datos dependen de la versión del shell instalada en su dispositivo.

Para la definición de documentos y sus ID, utilice ObjectID. Por otro lado, mientras escribe y ejecuta consultas, use $oid para buscar en toda la colección para encontrar el documento requerido.

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

Artículo relacionado - MongoDB ObjectId