MongoDB 索引
索引支持的解析度的查詢效率。如果冇有索引,MongoDB 必須掃描每一個文檔的集合,要選擇那些文檔相匹配的查詢語句。這種掃描的效率非常低,會要求 mongod 做大數據量的處理。
索引是一種特殊的數據結構,存儲設置在一個易於遍曆形式的數據的一小部分。索引存儲一個特定的字段或一組字段的值,在索引中指定的值的字段排列的。
ensureIndex() 方法
要創建一個索引,需要使用MongoDB 的ensureIndex()方法。
語法:
ensureIndex() 方法的基本語法如下
>db.COLLECTION_NAME.ensureIndex({KEY:1})
這裡關鍵是要在其中創建索引,1是按升序排列的字段名稱。要創建降序索引,需要使用-1。
例子
>db.mycol.ensureIndex({"title":1}) >
在ensureIndex()方法,可以通過多個字段多個字段上創建索引。
>db.mycol.ensureIndex({"title":1,"description":-1}) >
ensureIndex() 方法也可以接受的選項列表(可選),其下麵給出的列表:
參數 | 類型 | 描述 |
---|---|---|
background | Boolean | 在後台建立索引,以便建立索引並不能阻止其他數據庫活動。指定true建立在後台。默認值是 false. |
unique | Boolean | 創建唯一索引,以便收集不會接受插入索引鍵或鍵匹配現有的值存儲在索引文檔。指定創建唯一索引。默認值是 false. |
name | string | 索引的名稱。如果未指定,MongoDB中都生成一個索引名索引字段的名稱和排序順序串聯. |
dropDups | Boolean | 創建一個唯一索引的字段,可能有重複。 MongoDB的索引隻有第一次出現的一個鍵,從集合中刪除的所有文件包含該鍵的後續出現的。指定創建唯一索引。默認值是 false. |
sparse | Boolean | 如果為true,指數隻引用文檔指定的字段。這些索引使用更少的空間,但在某些情況下,特彆是各種不同的表現。默認值是 false. |
expireAfterSeconds | integer | 指定一個值,以秒為TTL控製多久MongoDB的文檔保留在此集合. |
v | index version | 索引版本號。默認的索引版本取決於mongodb 運行的版本在創建索引時. |
weights | document | 權重是從1到99999範圍內的數,表示該字段的意義,相對於其他的索引字段分數. |
default_language | string | 對於文本索引時,決定停止詞和詞乾分析器和標記生成規則列表的語言。默認值是 english. |
language_override | string | 對於文本索引時,指定的名稱在文檔中包含覆蓋默認的語言,語言字段中。默認值是語言。 |