配列にドキュメントが埋め込まれたドキュメントがあります。目的は、エイリアスログインを許可することです。つまり、1人のユーザーは異なる会社に所属している可能性があるため、複数のログイン(username + company_id + pwd)を持つことができる必要があります。
これは次のように見えます。
{
name : "James D"
logins : [
{company_id : 1, username : "james", pwd : "****"},
{company_id : 2, username : "james.d", pwd : "****"},
{company_id : 3, username : "jd", pwd : "****"}
]
}
company_id
とにインデックスを付けたいのですがusername
、
> db.user.ensureIndex({"logins.username" : "james", "logins.company_id" : 1})
そして、これが私の質問です、インデックスは機能しますか?クエリは実際にインデックスを使用していますか?(1)MongoDBがこの種のインデックスを処理するかどうかわからない、および(2)explain()関数の解釈方法がわからないためです。
> db.user.find({"logins.username" : "james", "logins.company_id" : 1}).explain()
{
"cursor" : "BtreeCursor username.color_1_logins.company_id_1",
"nscanned" : 3,
"nscannedObjects" : 3,
"n" : 2,
"millis" : 1,
"nYields" : 0,
"nChunkSkips" : 0,
"isMultiKey" : true,
"indexOnly" : false,
"indexBounds" : {
"logins.username" : [
[
"blue",
"blue"
]
],
"logins.company_id" : [
[
{
"$minElement" : 1
},
{
"$maxElement" : 1
}
]
]
}
}