web-dev-qa-db-ja.com

mongoDBでユーザーのメールを一意にする方法は?

ユーザーのデータを集めています。これは、ユーザーの電子メール、ユーザーのパスワード(ハッシュ)、および文字列の配列で構成されるかなり基本的なものになります。

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

同じemailを使用して2つの挿入ができないことを確認します。 mongoDBの_idはデフォルトで一意であり、パフォーマンスを向上させるために特別なデータ構造を使用していることを読みました。

emailが一意であることをどのように確認できますか。また、可能であれば、_idフィールドによって提供されるパフォーマンス上の利点を活用できますか?

編集:nullemail値がないこと、およびemailフィールドを含まないドキュメントがないことも確認します。

12
Ishan

これは、メールフィールドに一意のインデックスを作成することで実行できます。

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

スコット

10
Skooppa.com

nique キーワードを使用するか、単に_id値を電子メールにします。

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

Mongodb ensureIndex非推奨 になりました。代わりにcreateIndexを使用してください。

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

7
Mikko