Kể từ MongoDB v1.8 +, bạn có thể có được hành vi mong muốn là đảm bảo các giá trị duy nhất nhưng cho phép nhiều tài liệu mà không có trường bằng cách đặt sparse
tùy chọn true khi xác định chỉ mục. Như trong:
email : {type: String, trim: true, index: true, unique: true, sparse: true}
Hoặc trong shell:
db.users.ensureIndex({email: 1}, {unique: true, sparse: true});
Lưu ý rằng một chỉ mục thưa thớt, duy nhất vẫn không cho phép nhiều tài liệu với một email
trường có giá trị trong tổng số null
, chỉ nhiều tài liệu không có một email
trường.
Xem http://docs.mongodb.org/manual/core/index-sparse/