mongodb索引

索引一般可以極大的提升查詢的效率,若是沒有索引,MongoDB在讀取數據時必須掃描集合中的每一個文件並選取那些符合查詢條件的記錄。數據庫

這種掃描全集合的查詢效率是很是低的,特別在處理大量的數據時,查詢能夠要花費幾十秒甚至幾分鐘,這對網站的性能是很是致命的。數據結構

索引是特殊的數據結構,索引存儲在一個易於遍歷讀取的數據集合中,索引是對數據庫表中一列或多列的值進行排序的一種結構ide

createIndex() 方法
MongoDB使用 createIndex() 方法來建立索引。性能

注意在 3.0.0 版本前建立索引方法爲 db.collection.ensureIndex(),以後的版本使用了 db.collection.createIndex() 方法,ensureIndex() 還能用,但只是 createIndex() 的別名。網站

語法
createIndex()方法基本語法格式以下所示:spa

db.collection.createIndex(keys, options)
語法中 Key 值爲你要建立的索引字段,1 爲指定按升序建立索引,若是你想按降序來建立索引指定爲 -1 便可。

實例排序

db.col.createIndex({"title":1})

createIndex() 方法中你也能夠設置使用多個字段建立索引(關係型數據庫中稱做複合索引)。索引

db.col.createIndex({"title":1,"description":-1})ip

createIndex() 接收可選參數,可選參數列表以下:文檔

Parameter Type Description
background Boolean 建索引過程會阻塞其它數據庫操做,background可指定之後臺方式建立索引,即增長 "background" 可選參數。 "background" 默認值爲false。
unique Boolean 創建的索引是否惟一。指定爲true建立惟一索引。默認值爲false.
name string 索引的名稱。若是未指定,MongoDB的經過鏈接索引的字段名和排序順序生成一個索引名稱。
dropDups Boolean 3.0+版本已廢棄。在創建惟一索引時是否刪除重複記錄,指定 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.createIndex({open: 1, close: 1}, {background: true})
經過在建立索引時加 background:true 的選項,讓建立工做在後臺執行

MongoDB 排序 MongoDB 聚合

一、查看集合索引

db.col.getIndexes()
二、查看集合索引大小

db.col.totalIndexSize()
三、刪除集合全部索引

db.col.dropIndexes()
四、刪除集合指定索引

db.col.dropIndex("索引名稱")

相關文章
相關標籤/搜索