Diferencia entre ObjectId y $Oid en MongoDB
-
Características del
ObjectID -
Diferencia entre
ObjectIDy$oiden 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
ObjectIDal documento en sí. - El documento toma un
ObjectIDpredeterminado 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
ObjectIDproporcionado 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