Od MongoDB v1.8+ można uzyskać pożądane zachowanie zapewniające unikalne wartości, ale zezwalające na wiele dokumentów bez tego pola, ustawiając sparse
opcja na true podczas definiowania indeksu. Jak w:
email : {type: String, trim: true, index: true, unique: true, sparse: true}
Lub w powłoce:
db.users.ensureIndex({email: 1}, {unique: true, sparse: true});
Zwróć uwagę, że unikalny, rzadki indeks nadal nie zezwala na wiele dokumentów z email
pole z wartością z null
, tylko wiele dokumentów bez email
pole.
Zobacz http://docs.mongodb.org/manual/core/index-sparse/