MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Indice composé de mangouste unique + clairsemé

Vous étiez en fait assez proche de la solution, tout ce dont vous avez besoin pour l'utiliser lors de la création de l'index :

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

Assurez-vous d'avoir au moins la version 3.2 de mongo

Exemple :

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 :Peut-être que vous pouvez faire un petit "hack" et utiliser ceci :partialFilterExpression: { serialNr: {$exists:true}, serialNr: {$gte:0} }

J'ai essayé d'utiliser $ne, mais cela me renvoyait une erreur.