От MongoDB v1.8+ можете да получите желаното поведение за осигуряване на уникални стойности, но позволяване на множество документи без полето, като зададете sparse
опция за true при дефиниране на индекса. Като в:
email : {type: String, trim: true, index: true, unique: true, sparse: true}
Или в обвивката:
db.users.ensureIndex({email: 1}, {unique: true, sparse: true});
Имайте предвид, че уникален, рядък индекс все още не позволява множество документи с email
поле със стойност от null
, само няколко документа без email
поле.
Вижте http://docs.mongodb.org/manual/core/index-sparse/