2012-09-12 20 views
5
TENANT 
    { "_ID" : 11, NAME : "ruben", OPERATION :[{OPERATION_ID: 100, NAME : "Check"}] } 

cómo configurar OPERATION_ID tiene que ser único para evitar valores duplicados y para evitar valores nulos como la clave principal?Mongodb campo único de configuración

Respuesta

12

Cuando se desea que los OPERATION_IDs que ser único para todos los inquilinos, a continuación, puede hacerlo así:

db.tenants.ensureIndex({ operation.OPERATION_ID : 1 }, { unique:true, sparse:true }); 

Cuando se desea que los OPERATION_IDs a ser únicas por el inquilino, de modo que los dos inquilinos pueden ambos tienen el ID_operación: 100 pero ningún inquilino puede tener id_operación: 100 dos veces, debe agregar _id del inquilino al índice para que cualquier combinación dada de _id y operation_id sea única.

db.tenants.ensureIndex({ _id: 1, operation.OPERATION_ID : 1 }, { unique:true, sparse:true }); 
4

Adición de un unique index en OPERATION.OPERATION_ID se asegurará de que no hay dos documentos distintos contendrán un elemento en funcionamiento con el mismo id_operación.

Si desea evitar que un solo documento tenga dos elementos en OPERACIÓN con el mismo ID_ORGANIZACIÓN, no puede usar índices únicos; Deberá usar los operadores de actualización establecidos (como $ set y $ addToSet). Se podría convertir en un subdocumento OPERACIÓN introducido por id_operación, así:

{ "_ID" : 11, NAME : "ruben", OPERATION : {"100" : {NAME : "Check"} }} 

A continuación, puede exigir la unicidad mediante la emisión de actualizaciones con $ engarzar; por ejemplo:

db.<collection>.update({NAME: "ruben"}, {$set: {"OPERATION.100.NAME": "Uncheck"}}) 

En cuanto a los valores nulos: MongoDB no cuentan con limitaciones que no son nulos en los campos (que ni siquiera forzar un campo determinado a tener un solo tipo), por lo que tendrá que asegurarse en su aplicación que los valores nulos no están insertados.

+0

Hola quiero insertar valores pero tener un nombre único, como el nombre de usuario para iniciar sesión, cómo hacer un nombre de usuario único al insertarlo en una colección de inicio de sesión –

Cuestiones relacionadas