2012-03-14 34 views

Respuesta

43

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 id puede provocar un error illegal ObjectId format.

Esa sección solo 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 el _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".

A BSON de objeto es un valor de 12 bytes consiste en una marca de tiempo de 4 bytes (segundos desde época), un ID de 3-byte máquina, 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 se deben almacenar big endian a diferencia del resto de BSON.

+6

¿Es obligatorio el '_id' para cada documento de una colección? en otras palabras, ¿puedo crear un nuevo documento sin el campo '_id'? –

+2

@KevinMeredith Como se especifica [aquí] (https://docs.mongodb.com/manual/reference/bson-types/#objectid), sí, un campo '_id' es obligatorio.«En MongoDB, cada documento almacenado en una colección requiere un único campo '_id' que actúa como clave principal. Si un documento insertado omite el campo '_id', el controlador MongoDB genera automáticamente un' ObjectId' para el campo '_id'». – BowPark

10

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 elegir agregar un campo llamado id si lo desea, pero no será índice a menos que agregue un índice.

Es solo un error en los documentos.

0

Mis dos centavos:

El campo _id

MongoDB asigna un campo _id a cada documento y asigna índice primario en él. Hay formas en que podemos aplicar índices secundarios también. De forma predeterminada, MongoDB crea valores para el campo _id del tipo ObjectID. Este valor se define en BSON spec y está estructurado de esta manera:

de objeto (12 bytes cadena HEX) = Date (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)

Cuestiones relacionadas