索引
索引類型
- 單字段索引:在文檔的單個字段上創建用戶定義的升序/降序索引,稱為單字段索引
- 復合索引:多個字段的用戶定義索引,在其中的字段順序有重要的意義
- 其他索引
- 地理空間索引:支持對地理空間坐標數據的有效查詢
- 文本索引:支持在集合中搜索字符串內容,文本索引不存儲特定于語言的停止詞
- 哈希索引:只支持相等匹配,不支持基於範圍的查詢
查看索引
db.collection.getIndexes()
創建索引
db.collection.createIndex(keys,options)
- keys:包含字段和值對的文檔,字段時索引值,升序指定為1,降序指定為-1
- options:可選,創建一組控制索引創建的選項的文檔,下面是可選參數
- background:建索引是否阻塞其他數據庫操作,false為後台創建索引
- unique:建立的索引是否唯一,默認為false
- name:索引的名稱,不指定會被自動生成
- dropDups:3.0以上版本以飛起,建立唯一索引時是否刪除重複記錄,默認false
- sparse:文檔中不存在數據不啟動索引,默認為false,也就是為空的時候不查詢出來
- expireAfterSeconds:以秒為單位,設定集合的生存時間
- v:版本號
- weights:索引權重值,在1到99999之間
- default_laguage:文本索引的情況,確定停用詞和詞幹和詞器的規則列表,默認英語
- language_override:語言覆蓋默認
- 復合索引(對userid和name同時建立復合索引)
db.collection.createIndex({userid:1,name:-1})
刪除索引
db.collection.dropIndex(index(索引名稱))
db.collection.dropIndexs()
執行計劃
db.collection.find().explain()
覆蓋索引
- 和mysql的一樣,查詢字段和後面的帶索引的查詢條件一致,而不用再掃描文檔或將文檔帶出內存