位置:首頁 > 數據庫 > MongoDB基礎教程 > MongoDB 索引

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 對於文本索引時,指定的名稱在文檔中包含覆蓋默認的語言,語言字段中。默認值是語言。