Как сделать электронную почту пользователя уникальной в mongoDB?

Я делаю сбор пользовательских данных. Это будет довольно простой, состоящий из электронной почты пользователя, пароля пользователя (хэша) и массива строк.

{
    email: '[email protected]',
    password: 'password hash',
    arr: []
}

Я хочу убедиться, что не может быть двух вставок с тем же email. Я прочитал, что _id mongoDB по умолчанию уникален, и для повышения производительности он использует специальную структуру данных.

Как я могу убедиться, что email остается уникальным, и, если возможно, я могу использовать преимущества производительности, предоставляемые полем _id?

Изменить: я также хочу убедиться, что для email нет значений null и что нет документов, которые не содержат поля email.

Ответ 2

Используйте уникальное ключевое слово или просто сделайте значение _id электронной почтой.

db.collection.createIndex( { email: 1 }, { unique: true } )

Ответ 3

Mongodb ensureIndex устарел, используйте вместо него createIndex.

db.collection.createIndex( { email: 1 }, { unique: true } )