È possibile definire un indice nel sottocampo dell'e-mail con { unique:true } impostato. Ciò impedirà la memorizzazione di più copie dell'indirizzo e-mail nella raccolta.
Ad esempio, supponiamo che i tuoi documenti assomiglino a questo:
db.users.findOne() =>
{
"name" : "xxxx",
"emails" : [
{ address: "[email protected]", validated: false },
{ address: "[email protected]", validated: true }
]
}
Puoi definire un indice univoco nel campo email.address in questo modo:
db.users.ensureIndex(['emails.address',1], {unique: true})
Ora riceverai un errore se provi a inserire lo stesso indirizzo email due volte. Ti aiuterà anche a ottimizzare la ricerca degli utenti in base al loro indirizzo e-mail, che prima o poi sarà utile nella tua app.