MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Índice Composto de Mangusto Único + Esparso


Você estava realmente bem perto da solução, tudo o que você precisa para usar isso ao criar o índice:
partialFilterExpression: { serialNr: {$exists:true} }

Certifique-se de ter pelo menos a versão 3.2 do mongo

Exemplo :
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:Talvez você possa fazer um pequeno "hack" e usar isto:partialFilterExpression: { serialNr: {$exists:true}, serialNr: {$gte:0} }

Eu tentei usar $ne, mas estava me dando um erro.