### 4.1、創建索引
索引通常能夠極大的提高查詢的效率,如果沒有索引,MongoDB在讀取數據時必須掃描集合中的每個文件并選取那些符合查詢條件的記錄。這種掃描全集合的查詢效率是非常低的,特別在處理大量的數據時,查詢可以要花費幾十秒甚至幾分鐘,這對網站的性能是非常致命的。
 
索引是特殊的數據結構,索引存儲在一個易于遍歷讀取的數據集合中,索引是對數據庫表中一列或多列的值進行排序的一種結構。
 
**語法格式:**
~~~shell
db.集合名.createIndex(keys, options)
~~~
 
**參數說明:**
| 參數 | 類型 | 描述 |
| :-- | :-- | :-- |
| background | Boolean | 建索引過程會阻塞其它數據庫操作,background可指定以后臺方式創建索引,即增加 “background” 可選參數。 “background” 默認值為**false**。 |
| unique | Boolean | 建立的索引是否唯一。指定為true創建唯一索引。默認值為**false**。 |
| name | string | 索引的名稱。如果未指定,MongoDB的通過連接索引的字段名和排序順序生成一個索引名稱。 |
| sparse | Boolean | 對文檔中不存在的字段數據不啟用索引,這個參數需要特別注意,如果設置為true的話,在索引字段中不會查詢出不包含對應字段的文檔.。默認值為**false**。 |
| expireAfterSeconds | integer | 指定一個以秒為單位的數值,完成 TTL設定,設定集合的生存時間。 |
| v | index version | 索引的版本號。默認的索引版本取決于mongod創建索引時運行的版本。 |
| weights | document | 索引權重值,數值在1到99999之間,表示該索引相對于其他索引字段的得分權重。 |
| default\_language | string | 對于文本索引,該參數決定了停用詞及詞干和詞器的規則的列表。 默認為英語。 |
| language\_override | string | 對于文本索引,該參數指定了包含在文檔中的字段名,語言覆蓋默認的language,默認值為 language。 |
 
**案例演示:**
(1)、單字段索引
~~~shell
db.comment.createIndex({"articleid":1})
~~~
(2)、多字段索引
~~~shell
db.comment.createIndex({"articleid":1,"likenum":-1})
~~~
(3)、其它的索引
* 地理空間索引(Geospatial Index):為了支持對地理空間坐標數據的有效查詢,MongoDB提供了兩種特殊的索引:返回結果時使用平面幾何的二維索引和返回結果時使用球面 幾何的二維球面索引。
* 文本索引(Text Indexes) :MongoDB提供了一種文本索引類型,支持在集合中搜索字符串內容。這些文本索引不存儲特定于語言的停止詞(例如“the”、“a”、“or”), 而將集合中的詞作為詞干,只存儲根詞。
* 哈希索引(Hashed Indexes):為了支持基于散列的分片,MongoDB提供了散列索引類型,它對字段值的散列進行索引。這些索引在其范圍內的值分布更加隨機,但只支 持相等匹配,不支持基于范圍的查詢。
> 注意:其它的索引了解即可,不做重點!
- 第一章 MongoDB概述
- 1.1、MongoDB概述
- 1.2、MongoDB特點
- 1.3、MongoDB體系結構
- 1.4、MongoDB數據模型
- 第二章 MongoDB單機部署
- 2.1、Windows下單機部署
- 2.2、Linux下單機部署
- 第三章 MongoDB基本語法
- 3.1、創建數據庫
- 3.2、查看數據庫
- 3.3、刪除數據庫
- 3.4、創建集合
- 3.5、查看集合
- 3.6、刪除集合
- 3.7、插入文檔
- 3.8、查詢文檔
- 3.9、更新文檔
- 3.10、刪除文檔
- 第四章 MongoDB索引
- 4.1、創建索引
- 4.2、查看索引
- 4.3、刪除索引
- 第五章 MongoDB聚合
- 5.1、聚合表達式
- 5.2、聚合管道
- 第六章 MongoDB用戶管理
- 6.1、概述
- 6.2、相關命令
- 6.3、內置角色
- 6.4、具體角色
- 6.5、單實例配置
- 第七章 MongoDB備份與恢復
- 7.1、數據備份
- 7.2、數據恢復
- 第八章 MongoDB副本集
- 8.1、安裝環境
- 8.2、副本集介紹
- 8.3、副本集架構
- 8.4、副本集搭建
- 8.5、副本集常用命令
- 第九章 MongoDB分片集群
- 9.1、安裝環境
- 9.2、分片集群介紹
- 9.3、分片集群架構
- 9.4、分片集群搭建
- 9.5、分片集群常用命令