MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Indice composto mongoose unico + sparso

In realtà eri abbastanza vicino alla soluzione, tutto ciò di cui hai bisogno per usarlo durante la creazione di index :

partialFilterExpression: { serialNr: {$exists:true} }

Assicurati di avere almeno la versione 3.2 di mongo

Esempio :

db.col.createIndex({a:1, b:1},{unique:true, partialFilterExpression: { a: {$exists:true} })
db.col.save({a:50, b:27}) //pass
db.col.save({a:50, b:27}) //fails
db.col.save({b:27}) //pass
db.col.save({b:27}) //pass
db.col.save({b:27}) //pass
db.col.save({a:50, b:27}) //fails
db.col.save({a:50}) //pass
db.col.save({a:50}) //fails

PS:forse puoi fare un piccolo "hack" e usare questo:partialFilterExpression: { serialNr: {$exists:true}, serialNr: {$gte:0} }

Ho provato a usare $ne, ma mi dava un errore.