索引支援查詢的有效地提高效率。沒有索引,MongoDB必須掃描集合的每個文件,以選擇與查詢語句匹配的文件。這種掃描效率很低,需要 MongoDB 處理大量的資料。
索引是特殊的資料結構,以易於遍歷的形式儲存資料集的一小部分。 索引儲存特定欄位或一組欄位的值,按照索引中指定的欄位值排序。
要建立索引,需要使用MongoDB的ensureIndex()
方法。
語法
ensureIndex()
方法的基本語法如下 -
>db.COLLECTION_NAME.ensureIndex({KEY:1})
這裡的key
是要在其上建立索引的欄位的名稱,1
是升序。 要按降序建立索引,需要使用-1
。
範例
>db.mycol.ensureIndex({"title":1})
在ensureIndex()
方法中,可以傳遞多個欄位,以在多個欄位上建立索引。
>db.mycol.ensureIndex({"title":1,"description":-1})
>
ensureIndex()
方法也接受選項列表(可選)。 以下是列表 -
引數 | 型別 | 描述 |
---|---|---|
background |
Boolean |
在後台構建索引,以便構建索引不會阻止其他資料庫活動,則指定background 的值為true 。預設值為false 。 |
unique |
Boolean |
建立一個唯一的索引,使得集合不會接受索引鍵或鍵匹配索引中現有值的文件的插入。 指定true 以建立唯一索引。 預設值為false 。 |
name |
String |
索引的名稱。如果未指定,則MongoDB通過連線索引欄位的名稱和排序順序來生成索引名稱。 |
dropDups |
Boolean |
在可能有重複項的欄位上建立唯一索引。MongoDB僅索引第一次出現的鍵,並從集合中刪除包含該鍵的後續出現的所有文件。指定true 以建立唯一索引。 預設值為false 。 |
sparse |
Boolean |
如果為true ,則索引僅參照具有指定欄位的文件。這些索引在某些情況下(特別是排序)使用的空間較小,但行為不同。預設值為false 。 |
expireAfterSeconds |
integer |
指定一個值(以秒為單位)作為TTL ,以控制MongoDB在此集合中保留文件的時間。 |
v |
索引版本 | 索引版本號。預設索引版本取決於建立索引時執行的MongoDB的版本。 |
weights |
文件 | 權重是從1 到99999 之間的數位,並且表示該欄位相對於其他索引欄位在分數方面的意義。 |
default_language |
String |
對於文字索引,確定停止詞列表的語言以及控制代碼和分詞器的規則。 預設值為英文。 |
language_override |
String |
對於文字索引,要指定文件中包含覆蓋預設語言的欄位名稱。預設值為language 。 |