Bạn có thể xác định chỉ mục trên trường phụ email với tập hợp {unique:true}. Điều này sẽ ngăn nhiều bản sao của địa chỉ email được lưu trữ trong bộ sưu tập.
Ví dụ:giả sử tài liệu của bạn trông giống như sau:
db.users.findOne() =>
{
"name" : "xxxx",
"emails" : [
{ address: "[email protected]", validated: false },
{ address: "[email protected]", validated: true }
]
}
Bạn có thể xác định một chỉ mục duy nhất trên trường email.address như sau:
db.users.ensureIndex(['emails.address',1], {unique: true})
Bây giờ bạn sẽ gặp lỗi nếu bạn cố gắng chèn cùng một địa chỉ email hai lần. Nó cũng sẽ giúp bạn tối ưu hóa việc tra cứu người dùng theo địa chỉ email của họ, địa chỉ email này chắc chắn sẽ hữu ích trong ứng dụng của bạn vào lúc này hay lúc khác.