跳至主要内容

Multikey Index

Introduction

當某個field為一個array時,可以使用Multikey index。

Multikey Index會把array內的每個值都存到Index內[1]

假設有個Person collection,如下表

Namecompany
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。

Reference: