Diferencia entre los campos " id " e " id " en MongoDB
¿Hay alguna diferencia entre usar el campo ID o _ID de un documento MongoDB?
Estoy preguntando esto, porque suelo usar "_id", sin embargo vi este tipo({id:-1}) en la documentación: http://www.mongodb.org/display/DOCS/Optimizing+Object+IDs#OptimizingObjectIDs-Sortbyidtosortbyinsertiontime
EDITAR
Resulta que los documentos estaban equivocados.
4 answers
Espero que sea solo un error tipográfico en la documentación. El campo _id
es la clave principal para cada documento. Se llama _id
y también es accesible a través de id
. Intentar usar una clave id
puede resultar en un error illegal ObjectId format
.
Esa sección solo indica que los OBJETOS generados automáticamente comienzan con una marca de tiempo para que sea posible ordenar sus documentos automáticamente. Esto es bastante genial ya que _id
se indexa automáticamente en cada colección. Ver http://www.mongodb.org/display/DOCS/Object + IDs para más información. Específicamente bajo "BSON ObjectId Specification".
Un objeto BSON es un valor de 12 bytes que consiste en una marca de tiempo de 4 bytes (segundos desde la época), un id de máquina de 3 bytes, un id de proceso de 2 bytes y un contador de 3 bytes. Tenga en cuenta que los campos de marca de tiempo y contador deben almacenarse big endian a diferencia del resto de BSON.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-19 20:58:38
El campo _id
es el campo predeterminado para los objetos Bson y,por defecto, está indexado.
_id
y no son lo mismo. También puede optar por agregar un campo llamado id
si lo desea, pero no será índice a menos que agregue un índice.
Es solo un error tipográfico en los documentos.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-14 01:15:52
Id es un alias para _id en mongoid.id devolvería el _id del documento. https://github.com/mongodb/mongoid/blob/master/lib/mongoid/fields.rb#L47
Si no se especifica el campo _id, se genera automáticamente un ObjectedId.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-29 12:45:20
Mis dos centavos:
El campo _id
MongoDB
asigna un campo _id
a cada documento y asigna un índice primario en él. Hay maneras por las cuales podemos aplicar índices secundarios también. Por defecto, MongoDB
crea valores para el campo _id
de tipo ObjectID
. Este valor se define en BSON
spec y se estructura de esta manera:
ObjectId ( cadena hexadecimal de 12 bytes) = Fecha (4 bytes, un valor de marca de tiempo que representa el número de segundos desde la época Unix) + Dirección MAC (3 bytes) + PID (2 bytes) + Contador (3 bytes)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-29 18:52:08