MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongoose Compound Index Unique + Sparse

Sie waren der Lösung eigentlich ziemlich nahe, alles, was Sie brauchen, um dies beim Erstellen von index :

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

Stellen Sie sicher, dass Sie mindestens Version 3.2 von Mongo haben

Beispiel:

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:Vielleicht können Sie einen kleinen "Hack" machen und dies verwenden:partialFilterExpression: { serialNr: {$exists:true}, serialNr: {$gte:0} }

Ich habe versucht, $ne zu verwenden, aber es hat mir einen Fehler ausgegeben.