MongoDB索引
索引支持查詢的有效地提高效率。沒有索引,MongoDB必須掃描集合的每個文檔,以選擇與查詢語句匹配的文檔。這種掃描效率很低,需要 MongoDB 處理大量的數據。
索引是特殊的數據結構,以易於遍歷的形式存儲數據集的一小部分。 索引存儲特定字段或一組字段的值,按照索引中指定的字段值排序。
ensureIndex()方法
要創建索引,需要使用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
。