{unique:true}を設定して、メールサブフィールドにインデックスを定義できます。これにより、電子メールアドレスの複数のコピーがコレクションに保存されるのを防ぐことができます。
たとえば、ドキュメントが次のようになっているとします。
db.users.findOne() =>
{
"name" : "xxxx",
"emails" : [
{ address: "[email protected]", validated: false },
{ address: "[email protected]", validated: true }
]
}
次のように、email.addressフィールドに一意のインデックスを定義できます。
db.users.ensureIndex(['emails.address',1], {unique: true})
同じメールアドレスを2回挿入しようとすると、エラーが発生します。また、ある時点でアプリで役立つはずのメールアドレスでユーザーを検索するのを最適化するのにも役立ちます。