Jeśli używasz MongoDB 3.2, możesz użyć unikalnego indeksu częściowego zamiast rzadkiego indeksu.
Częściowy indeks jest faktycznie zalecany nad rzadkim indeksem
Przykład
db.users.createIndex({ "userId": 1, "project": 1 },
{ unique: true, partialFilterExpression:{
userId: { $exists: true, $gt : { $type : 10 } } } })
db.users.createIndex({ "anonymousId": 1, "project": 1 },
{ unique: true, partialFilterExpression:{
anonymouseId: { $exists: true, $gt : { $type : 10 } } } })
W powyższym przykładzie unikalny indeks zostanie utworzony tylko wtedy, gdy userId
jest obecny i nie zawiera wartości null. To samo dotyczy anonymousId
też.
Zobacz https://docs.mongodb.org/ manual/core/index-unique/#unique-partal-indexes