oid new long example bsonid autoincrement mongodb mongoid

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)



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.