В нивото на имейл пътя можете да използвате само:
email: {
type: String
}
И в нивото на схемата използвайте:
SchemaName.index({ email: 1 }, {
unique: true,
partialFilterExpression: {
'email': { $exists: true, $gt: '' }
}
});
По този начин уникалното ограничение се прилага само ако имейлът съществува и не е празен низ