0
我有一個數組中嵌入文檔的文檔。 prupose是允許別名登錄,即:一個用戶需要能夠擁有多個登錄名(username + company_id + pwd),因爲他或她可能屬於不同的公司。MongoDB在嵌入式數組上使用索引嗎?
它看起來somethine這樣的:
{
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
}
]
]
}
}
感謝您的解釋 - 這正是我一直在尋找的! – luttkens