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

Mongoose Compound Index Unik + Sparse

Du var faktisk ret tæt på løsningen, alt hvad du behøver for at bruge dette, når du opretter indeks :

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

Sørg for at have mindst 3.2 version af mongo

Eksempel:

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:Måske kan du lave et lille "hack" og bruge dette:partialFilterExpression: { serialNr: {$exists:true}, serialNr: {$gte:0} }

Jeg prøvede at bruge $ne, men det gav mig en fejl.




  1. Underskemaer på Mongoose uden Arrays

  2. For mange åbne filer, mens du sikrer indeks mongo

  3. MongoDB + Elasticsearch eller kun Elasticsearch?

  4. 2 måder at vise et indeks i MongoDB