[
{
"name": "hoge",
"users": [
{ "email": "..." },
{ "email": "..." },
]
},
...
}
こういうデータのCollectionがあったとして、users.email
をユニークにしたいんだけど、MongoDBのUnique Indexはドキュメント毎にユニークかどうかを保証するものなようで、同一ドキュメント内で同じデータがあっても通ってしまう。
つまりusers.email
にUnique Indexを張った場合、これは通らないけど
[
{
"name": "hoge",
"users": [
{ "email": "foo@example.com" }
]
},
{
"name": "fuga",
"users": [
{ "email": "foo@example.com" } // 重複エラーになる
]
}
]
これは通るということ。
{
"name": "hoge",
"users": [
{ "email": "foo@example.com" },
{ "email": "foo@example.com" } // 同一ドキュメント内なのでOK!
]
}
アプリケーション側でなんとかするか、Collectionを分けるしかないんだろうか。umm...