Multikey Index
Introduction
當某個field為一個array時,可以使用Multikey index。
Multikey Index會把array內的每個值都存到Index內[1]。
假設有個Person
collection,如下表
Name | company |
---|---|
Amy | [Acer, Asus] |
Bob | [Dell] |
Carol | [Acer, Dell] |
當在company
field建立multikey index後,index的存法可能為
Index | _id |
---|---|
Acer | [Amy, Carol] |
Asus | [Amy] |
Dell | [Bob, Carol] |
這樣當Query為: 找到所有包含company "Acer"的Document時,就可以利用index
db.Person.createIndex({ company: 1})。
db.Person.find({ company: "Acer"})。
若array裡面為embedded document,則multikey index也可以建立在embedded doc的某個field上面。
db.Person.createIndex({ company.name: 1})
db.Person.find({ company.name: "Acer"})。
Note: 若multikey index為
{company: 1}
,則上述Querydb.Person.find({ company.name: "Acer"})
會無法利用index,因為這時的index value為整個embedded document。