new - mongodb object id long
Diferencia entre los campos "id" y "_id" en MongoDB (4)
El campo _id
es el campo predeterminado para Bson ObjectId y, de forma predeterminada, está indexado.
_id
y id 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.
¿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.
Mis dos centavos:
El campo _id
MongoDB
asigna un campo _id
a cada documento y le asigna un índice primario. Hay formas en que podemos aplicar índices secundarios también. Por defecto, MongoDB
crea valores para el campo _id
de tipo ObjectID
. Este valor se define en la especificación BSON
y está estructurado de esta manera:
ObjectID (cadena HEX de 12 bytes) = Fecha (4 bytes, un valor de indicación de fecha y hora que representa el número de segundos desde la época Unix) + dirección MAC (3 bytes) + PID (2 bytes) + Contador (3 bytes)
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 el campo _id no se especifica, se genera un ObjectedId automáticamente.
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 se puede acceder a través de id
. Intentar utilizar una clave de id
puede provocar un error de illegal ObjectId format
id
illegal ObjectId format
.
Esa sección simplemente indica que los ObjectID generados automáticamente comienzan con una marca de tiempo, por lo que es posible ordenar los documentos automáticamente. Esto es muy bueno ya que _id
se indexa automáticamente en cada colección. Consulte http://www.mongodb.org/display/DOCS/Object+IDs para obtener más información. Específicamente en "Especificación BSID ObjectID".
Un ID de objeto BSON es un valor de 12 bytes que consta de una marca de tiempo de 4 bytes (segundos desde época), una identificación de máquina de 3 bytes, una identificación de proceso de 2 bytes y un contador de 3 bytes. Tenga en cuenta que los campos de marca de tiempo y contador se deben almacenar big endian a diferencia del resto de BSON.