# 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() 接收可選參數,可選參數列表如下:
| Parameter | Type | Description |
| --- | --- | --- |
| background | Boolean | 建索引過程會阻塞其它數據庫操作,background可指定以后臺方式創建索引,即增加 "background" 可選參數。 "background" 默認值為**false**。 |
| unique | Boolean | 建立的索引是否唯一。指定為true創建唯一索引。默認值為**false**. |
| name | string | 索引的名稱。如果未指定,MongoDB的通過連接索引的字段名和排序順序生成一個索引名稱。 |
| dropDups | Boolean | 在建立唯一索引時是否刪除重復記錄,指定 true 創建唯一索引。默認值為 **false**. |
| sparse | Boolean | 對文檔中不存在的字段數據不啟用索引;這個參數需要特別注意,如果設置為true的話,在索引字段中不會查詢出不包含對應字段的文檔.。默認值為 **false**. |
| expireAfterSeconds | integer | 指定一個以秒為單位的數值,完成 TTL設定,設定集合的生存時間。 |
| v | index version | 索引的版本號。默認的索引版本取決于mongod創建索引時運行的版本。 |
| weights | document | 索引權重值,數值在 1 到 99,999 之間,表示該索引相對于其他索引字段的得分權重。 |
| default_language | string | 對于文本索引,該參數決定了停用詞及詞干和詞器的規則的列表。 默認為英語 |
| language_override | string | 對于文本索引,該參數指定了包含在文檔中的字段名,語言覆蓋默認的language,默認值為 language. |
### 實例
在后臺創建索引:
```
db.values.ensureIndex({open: 1, close: 1}, {background: true})
```
通過在創建索引時加background:true 的選項,讓創建工作在后臺執行
- NoSQL 簡介
- 什么是MongoDB ?
- window平臺安裝 MongoDB
- Linux平臺安裝MongoDB
- MongoDB 數據庫,對象,集合
- MongoDB - 連接
- PHP安裝MongoDB擴展驅動
- MongoDB 數據插入
- MongoDB使用update()函數更新數據
- MongoDB使用- remove()函數刪除數據
- MongoDB 查詢
- MongoDB條件操作符
- MongoDB條件操作符 - $type
- MongoDB Limit與Skip方法
- MongoDB 排序
- MongoDB 索引
- MongoDB 聚合
- MongoDB 復制(副本集)
- MongoDB 分片
- MongoDB 備份(mongodump)與恢復(mongorerstore)
- MongoDB 監控
- MongoDB Java
- MongoDB PHP
- MongoDB 關系
- MongoDB 數據庫引用
- MongoDB 覆蓋索引查詢
- MongoDB 查詢分析
- MongoDB 原子操作
- MongoDB 高級索引
- MongoDB 索引限制
- MongoDB ObjectId
- MongoDB Map Reduce
- MongoDB 全文檢索
- MongoDB 正則表達式
- MongoDB 管理工具: Rockmongo
- MongoDB GridFS
- MongoDB 固定集合(Capped Collections)
- MongoDB 自動增長
- 免責聲明