菜鳥的mongoDB學習---(六)MongoDB 索引
阿新 • • 發佈:2017-05-31
val drop -m 單位 處理 數列 track 掃描 大量
MongoDB 索引
ps:大概有半個月木有更新了,因為前一階段的出差和這幾天突然來的項目。導致上網時間急劇降低,實在是sorry,以後預計會好一點。
索引通常可以極大的提高查詢的效率。假設沒有索引。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 的選項。讓創建工作在後臺運行。
菜鳥的mongoDB學習---(六)MongoDB 索引