索引就是用来加速查询的。数据库索引与书籍的索引类似:有了索引就不需要翻遍整本书,数据库则可以直接在索引中查找,使得查找速度能提高几个数量级。在索引中找到条目以后,就可以直接跳转到目标文档的位置。
一、创建索引 --- ensureIndex()
语法结构:
db.collection.ensureIndex(keys[,options])
- keys,要建立索引的参数列表。如:{key:1},其中key表示字段名,1表示升序排序,-1表示降序排序
- options,可选参数
- background,Boolean,在后台建立索引,以便建立索引时不阻止其他数据库活动,默认false
- unique,Boolean,建立的索引是否唯一,指定为true创建唯一索引,默认false
- name,string,指定索引的名称,如果未指定,根据连接索引的字段名和排序顺序生成一个索引名称
- 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.
1、创建索引
db.person.ensureIndex({name:1})
2、创建唯一索引
db.person.ensureIndex({name:1},{unique:true})
二、重建索引 --- reIndex()
db.person.reIndex()
三、查看索引 --- getIndexes()
1、查看集合中的索引
dp.person.getIndexes()
2、查看集合中的索引大小
db.person.totalIndexSize()
3、查看索引相关信息
dp.person.starts()
4、查看数据库中所有索引
db.system.indexes.find()
5、查看查询使用索引的情况
db.person.find(name:"Jack55555").explain()
四、删除索引 --- dropIndex()
1、删除指定的索引
db.person.dropIndex("name_1")
2、删除所有索引
db.person.dropIndexes()