Puede definir un índice en el subcampo de correo electrónico con el conjunto {único:verdadero}. Esto evitará que se almacenen varias copias de la dirección de correo electrónico en la colección.
Por ejemplo, supongamos que sus documentos se ven así:
db.users.findOne() =>
{
"name" : "xxxx",
"emails" : [
{ address: "[email protected]", validated: false },
{ address: "[email protected]", validated: true }
]
}
Puede definir un índice único en el campo email.address como este:
db.users.ensureIndex(['emails.address',1], {unique: true})
Ahora obtendrá un error si intenta insertar la misma dirección de correo electrónico dos veces. También lo ayudará a optimizar la búsqueda de usuarios por su dirección de correo electrónico, lo que seguramente será útil en su aplicación en algún momento u otro.