2、MongoDB學習之索引的管理
阿新 • • 發佈:2017-09-09
字段 是否 reat 手動 基本 默認 uniq 匹配 會有 目標:實現索引的創建、查詢、刪除、explan管理等操作
環境:
> db.version()
3.4.7
索引創建滿足的基本需求:
1;索引提高查詢速度
2;在mongodb中,索引可以按自動列升序/降序來創建,便於排序
3;默認是用btree來組織索引文件,2.4版本以後,也允許建立hash索引
管理索引常用到的語法有:
db.c1.createIndex(keypattern[,options]) #keypattern表示索引匹配的字段列,例如name:1 表示那麽列升序建立索引,[,options]表示使用另一個字段列創建索引,從而組成復合索引
db.c1.getIndexes() #查看索引的語法,當還沒有手動創建索引的時候,其實系統默認也會有索引列:_id_
db.c1.find({name:‘test10‘}).explain() #表示查詢name列集合集值test10是否有創建索引
一、索引的創建
常規的索引創建方式有基本索引、復合索引、唯一索引三類。
1、基本索引
> db.c1.createIndex({newname:1})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
#由上可以看出創建了一個基本的單列索引
2、復合索引的創建
> db.c1.createIndex({newname:1,age:-1})
3、唯一索引的創建
唯一索引的主要功能就是只允許字段值唯一
常用語法為:
db.c1.ensureIndex(keypattern[,options]) - DEPRECATED, use createIndex() instead
> db.c1.ensureIndex({num:1},{unique:true})
二、索引的查看 > db.c1.getIndexes() 1;查看基本索引
2;查看復合索引
3;查看唯一索引
三、explan索引驗證 創建索引主要是供加快查詢速度的,基本索引創建之後,基於該列查詢會加快速度。復合索引一般是由兩個或者多個列做成索引值,如果是單列條件查詢的話,最開始創建的字段列能夠有效(也就是說復合索引創建後,程序單列查詢會有索引效果),但是之後的字段列的索引查詢是沒有效果的。如果復合索引裏面用到的查詢條件都是創建的復合索引時的列,字段條件查詢時變換位置也沒關系 使用方法: > db.c1.find({newname:‘test5‘},{age:5}).explain()
#可以看到它的一個復合查詢
四、索引的刪除 常用的語法: db.c1.dropIndex(index) > db.c1.dropIndex({age:-1}) { "nIndexesWas" : 6, "ok" : 1 } > db.c1.dropIndex({num:1}) { "nIndexesWas" : 5, "ok" : 1 } > db.c1.dropIndex({name:1,age:-1}) { "nIndexesWas" : 4, "ok" : 1 }
2、MongoDB學習之索引的管理