如何使用户的电子邮件在 mongoDB 中唯一?

How to make user's email unique in mongoDB?

我正在收集用户数据。这将是非常基本的,包括用户的电子邮件、用户的密码(散列)和一个字符串数组。

{
    email: 'user@example.com',
    password: 'password hash',
    arr: []
}

我想确保不能有两个具有相同 email 的插入。 我读到 mongoDB 的 _id 默认是唯一的,它使用一些特殊的数据结构来提高性能。

如何确保 email 保持唯一性,如果可能,我能否利用 _id 字段提供的性能优势?

编辑:我还想确保 email 没有 null 值,并且没有不包含 email 字段的文档。

使用unique关键字,或者直接将_id值设为email。

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

您可以通过为您的电子邮件字段创建唯一索引来实现。

http://docs.mongodb.org/manual/tutorial/create-a-unique-index/

Mongodb ensureIndexdeprecated,请改用 createIndex

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