Vous pouvez définir un index sur le sous-champ email avec { unique:true } défini. Cela empêchera plusieurs copies de l'adresse e-mail d'être stockées dans la collection.
Par exemple, supposons que vos documents ressemblent à ceci :
db.users.findOne() =>
{
"name" : "xxxx",
"emails" : [
{ address: "[email protected]", validated: false },
{ address: "[email protected]", validated: true }
]
}
Vous pouvez définir un index unique sur le champ email.address comme ceci :
db.users.ensureIndex(['emails.address',1], {unique: true})
Maintenant, vous obtiendrez une erreur si vous essayez d'insérer deux fois la même adresse e-mail. Cela vous aidera également à optimiser la recherche d'utilisateurs par leur adresse e-mail, ce qui sera forcément utile dans votre application à un moment ou à un autre.