Você pode definir um índice no subcampo de email com { unique:true } definido. Isso impedirá que várias cópias do endereço de e-mail sejam armazenadas na coleção.
Por exemplo, digamos que seus documentos sejam parecidos com isto:
db.users.findOne() =>
{
"name" : "xxxx",
"emails" : [
{ address: "[email protected]", validated: false },
{ address: "[email protected]", validated: true }
]
}
Você pode definir um índice exclusivo no campo email.address assim:
db.users.ensureIndex(['emails.address',1], {unique: true})
Agora você receberá um erro se tentar inserir o mesmo endereço de e-mail duas vezes. Ele também ajudará você a otimizar a busca de usuários por seu endereço de e-mail, o que certamente será útil em seu aplicativo em algum momento ou outro.