Diferencia entre ObjectId y $Oid en MongoDB
-
Características del
ObjectID
-
Diferencia entre
ObjectID
y$oid
en MongoDB -
Insertar documento en una colección con
ObjectID
-
Métodos del
ObjectID
- Conclusión
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:
- La marca de tiempo de Unix del documento individual está representada por los primeros cuatro bytes.
- La ID de la máquina en la que se ejecuta actualmente el servidor MongoDB está representada por los siguientes tres bytes.
- El ID del proceso está representado por los siguientes dos bytes.
- 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.
- Al momento de la creación, el usuario asigna el
ObjectID
al documento en sí. - 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:
- Nombre de la Base de Datos:
officedb
- 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.
- El método
str
: se utiliza para obtener el ID del objeto en un formato de cadena hexadecimal. - El método
ObjectId.getTimestamp()
devuelve la parte de la marca de tiempo del objeto como una fecha. - El método
ObjectId.valueOf()
: este método devuelve el formato hexadecimal de un literal de cadena dado. - 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.
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