sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongoose Compound Index Unik + Sparse

Du var faktiskt ganska nära lösningen, allt du behöver för att använda detta när du skapar index :

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

Se till att ha minst 3.2-versionen av mongo

Exempel:

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:Du kanske kan göra lite "hack" och använda detta:partialFilterExpression: { serialNr: {$exists:true}, serialNr: {$gte:0} }

Jag försökte använda $ne, men det gav mig ett fel.




  1. MongoDb upsert undantag ogiltigt BSON-fält

  2. Hur upprätthålls ordningen på fastigheter för sortering i mongodb?

  3. StackExchange.Redis - LockTake / LockRelease-användning

  4. MongoDB $toLower