Możesz zdefiniować indeks w podpolu e-mail z ustawionym { unique:true }. Zapobiegnie to przechowywaniu wielu kopii adresu e-mail w kolekcji.
Załóżmy na przykład, że Twoje dokumenty wyglądają mniej więcej tak:
db.users.findOne() =>
{
"name" : "xxxx",
"emails" : [
{ address: "[email protected]", validated: false },
{ address: "[email protected]", validated: true }
]
}
Możesz zdefiniować unikalny indeks w polu email.address w następujący sposób:
db.users.ensureIndex(['emails.address',1], {unique: true})
Teraz pojawi się błąd, jeśli spróbujesz dwukrotnie wstawić ten sam adres e-mail. Pomoże Ci również zoptymalizować wyszukiwanie użytkowników po ich adresach e-mail, co z pewnością przyda się w Twojej aplikacji w pewnym momencie.