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.

Author: Arthur Neves, 2012-03-14

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.

 50
Author: Leonard Garvey,
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.

 12
Author: Bryan Migliorisi,
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.

 5
Author: tessie,
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)

 1
Author: student,
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