索引攻略——MongoDB

1. 索引简介

索引:建立在表格之上,提供一个能够更快的定位到数据的方法

1、通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录
2、可以加快查询,但是同时降低了修改插入等性能
3、是特殊的数据结构,索引是对数据库表中一列或多列的值进行排序的一种结构
4、默认是用btree来组织索引文件

默认情况下,在建立集合的同时,MongoDB数据库自动为集合_id建立唯一索引,可以避免重复插入同一_id值的文档记录。

2. 创建索引:
命令格式:db.collection.createIndex( < keys >,< options> )
keys:是键值对,是创建索引的名称及排序方式,1 代表按升序排列;-1 代表按降序排列。
例:按age字段创建升序索引

  • db.person.createIndex({age:1})

  • options:可选参数,表示建立索引的设置。可选值如下:
    在这里插入图片描述
    3.使用索引需注意:

  • 随着数据量的不断增长,当需要为某个集合增加索引时,会发现此时创建索引会很费力,同时也很消耗性能。

  • 创建索引时MongoDB默认是阻塞式,阻塞会让索引建立得更快,任何此期间的请求将不能响应。

  • 设置{“background“:true}选项,在后台完成,同时也可以正常处理请求。

4.唯一索引
语法如下:
db.collection.createIndex(索引名称或索引文档, {unique:true})

例如,如果想保证文档的“name”键都有不一样的值,创建一个唯一索引:
db.people.createIndex({“name”:-1},{unique:true}
即:people集合中创建按name键的值降序排列的唯一索引

4.1 消除重复

例如,删除"name"键重复的索引值:
db.people.createIndex({“name”:1},{“unique”:true,“dropDups”:true}})

  • dropDups选项就可以保留发现的第一个文档,而删除接下来有重复值的文档。

4.2 复合索引:建立在多个字段上的索引

例如:在age和name字段建立复合索引
db.person.createIndex({“age”:1,“name”:1})

4.3 复合唯一索引:
db.person.createIndex({“age”:1,“name”:1},{“unique”:true})

4.4 查询索引
查看集合的所有索引: db.集合名.getIndexes()
查询索引大小:db.集合名.totalIndexSize() (即索引所占空间大小)

4.5 修改索引
先删除旧有的索引,再创建新的索引。
主要有两种方式:
1、会删除当前集合中的所有索引(_id上的默认索引除外)。
db.集合名.dropIndexes()

2、可以根据指定的索引名称或索引文档删除索引(_id上的默认索引除外)。
db.集合名.dropIndex(index)
例:删除刚才创建的age索引:db.person.dropIndex({age:1})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唐樽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值