2016-01-12 10 views
6

Sto utilizzando il seguente modello Mongoose:Fare combinazione di due campi unici nella mia collezione

var Test = db.model('Test', db.Schema({ 
     one: { type: String, required: true }, 
     two: { type: String, required: true } 
    }, 
    { strict: false }) 
); 

Ha due campi richiesti, one e two, e strict:false perché ci possono essere altri campi con nomi indeterminati.

Vorrei che la combinazione di one e two di essere unico. Ciò significa che potrebbero esserci più documenti con lo stesso one o lo stesso two, ma nessuno di questi deve avere la stessa combinazione oneetwo.

Questo può essere ottenuto con Mongoose?

risposta

8

È possibile applicare un unique constraint on compound indexes, e si può fare questo in Mongoose utilizzando il metodo dello schema, che definisce gli indici a livello di schema index():

var testSchema = db.Schema({ 
    "one": { "type": String, "required": true }, 
    "two": { "type": String, "required": true } 
}, { "strict": false }); 

testSchema.index({ "one": 1, "two": 1}, { "unique": true }); 
var Test = db.model("Test", testSchema); 
+0

Esiste un modo per fare il stessa cosa se "due" è un riferimento ad un altro schema? Grazie –