Si está usando MongoDB 3.2, puede usar índice parcial único en lugar de índice disperso.
En realidad, se recomienda el índice parcial sobre el índice disperso
Ejemplo
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 } } } })
En el ejemplo anterior, el índice único solo se creará cuando userId
está presente y no contiene un valor nulo. Lo mismo se aplica a anonymousId
también.
Consulte https://docs.mongodb.org/ manual/core/index-unique/#unique-partial-indexes