2010-07-21 25 views

Respuesta

66

_id campo está reservado para la clave principal en mongodb, y ese debería ser un valor único. Si no configura nada en _id, automáticamente lo rellenará con "Objeto Id de MongoDB". Pero puedes poner cualquier información única en ese campo.

Otros detalles: http://www.mongodb.org/display/DOCS/BSON

espero que ayude.

+32

De hecho, esto no responde a 'cómo configurar uno de mis campos como key' primaria, ex: Quiero user_email como clave en las colecciones de los usuarios, pero la forma de establecer que campo como clave y único –

1

http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/

También puede consultar este enlace y autoincrementación el campo _id.

+13

Tenga en cuenta que [las respuestas solo de enlace] (http://meta.stackoverflow.com/tags/link-only-answers/info) no se recomiendan, por lo que las respuestas deberían ser el punto final de una búsqueda de una solución (frente a otra escala más de referencias, que tienden a quedar obsoletas en el tiempo). Considere agregar una sinopsis independiente aquí, manteniendo el enlace como referencia. – kleopatra

+1

El enlace ahora está roto, esta respuesta es inútil – PeterM

1

Una forma de lograr este comportamiento es estableciendo el valor en _id (que está reservado para una clave principal en MongoDB) basándose en los campos personalizados que desea tratar como clave principal.
es decir, si quiero employee_id como la clave principal, entonces en el momento de crear el documento en MongoDB; asigne el valor _id igual que el de employee_id.

14

La otra forma es crear Indexes para su colección y asegúrese de que sean únicas.

Puede encontrar más en la siguiente link

realidad Me parece bastante simple y fácil de implementar.

+2

"La restricción única en los índices garantiza que solo un documento puede tener un valor para un campo de una colección. Para las colecciones fragmentadas estos índices únicos no pueden exigir exclusividad porque las operaciones de inserción e indexación son locales a cada fragmento "--https: //docs.mongodb.org/manual/tutorial/enforce-unique-keys-for-sharded-collections/ – JohnC

8

En mongodb, el campo _id está reservado para la clave principal. Mongodb usa un valor interno de ObjectId si no lo define en su objeto y también crea un índice para garantizar el rendimiento.

Pero puede poner su propio valor único para _id y Mongodb lo usará en lugar de hacer uno para usted. E incluso si desea utilizar múltiples campos como clave primaria puede utilizar un objeto:

{ _id : { a : 1, b: 1} } 

Sólo tenga cuidado al crear estos identificadores de que el orden de las teclas (A y B en el ejemplo) asuntos, si SWAP alrededor, se considera un objeto diferente.

3

Si piensa como RDBMS no puede crear la clave principal, la clave primaria predeterminada es _id. Pero puede crear Unique Index. El ejemplo está abajo.

db.members.createIndex({ "user_id": 1 }, { unique: true }) 

db.members.insert({'user_id':1,'name':'nanhe'}) 

db.members.insert({'name':'kumar'}) 

db.members.find(); 

La salida está abajo.

{ "_id": ObjetoID ("577f9cecd71d71fa1fb6f43a"), "user_id": 1, "name": "Nanhe"}

{ "_id": ObjetoID ("577f9d02d71d71fa1fb6f43b"), "name": "kumar"}

Cuando intenta insertar el mismo error de escritura de user_id mongodb trow.

db.members.insert({'user_id':1,'name':'aarush'}) 

WriteResult ({ "nInserted": 0, "writeError": { "código": 11000, "errmsg": "E11000 duplicado colección de errores clave: índice student.members: clave DUP user_id_1 : {:} 1.0" }} )

4

simple que puede utilizar db.collectionName.createIndex({urfield:1},{unique:true});

2

Esta es la sintaxis de la creación de la clave primaria

db. < colección> .createIndex (< llave y especificación de tipo de índice>, { único: true})

Tomemos que nuestra base de datos se han colección denominada estudiante y del documento clave han llamado student_id la que necesitamos para hacer una clave primaria. Entonces el comando debería ser como a continuación.

db.student.createIndex({student_id:1},{unique:true}) 

Puede comprobar si este student_id conjunto como clave principal al tratar de agregar valor duplicado a la colecciónestudiante.

prefieren este documento para obtener más información https://docs.mongodb.com/manual/core/index-unique/#create-a-unique-index

Cuestiones relacionadas