Au niveau du chemin de l'e-mail, vous ne pouvez utiliser que :
email: {
type: String
}
Et au niveau du schéma, utilisez :
SchemaName.index({ email: 1 }, {
unique: true,
partialFilterExpression: {
'email': { $exists: true, $gt: '' }
}
});
De cette façon, la contrainte d'unicité n'est appliquée que si l'e-mail existe et n'est pas une chaîne vide