慕课网《MongoDB入门篇》课程 第4章 mongoDB常见的查询索引

4-1 索引简介

索引的种类:

_id索引

单键索引

多键索引

复合索引

过期索引

全文索引

地理位置索引

4-2 _id索引

_id索引是绝大多数集合默认建立的索引。

对于每个插入的数据,MongoDB都会自动生成一条唯一的_id字段。

_id索引会在插入时自动创建。


4-3 单键索引

1. 单键索引是最普通的索引

例如:一条记录,形式为:{x:1,y:2,z:3}

2.与_id索引不同,单键索引不会自动创建

db.mycollection.ensureIndex({x:1})

4-4 多键索引

多键索引与单键索引创建形式相同,区别在于字段的值。

         单键索引:值为一个单一的值,例如字符串,数字或者日期。

         多键索引:值具有多个记录,例如数组。

例如:db.mycollections.insert({x:[1,2,3,4,5]});

             对于这条数据来讲,MongoDB认为x创建了一个多键索引。

4-5 复合索引

当我们的查询条件不只有一个时,就需要建立复合索引。

例如:插入{x:1,y:2,z:3}记录,若想按照x与y的值查询,则需要建立复合索引:

            db.collection.ensureIndex({x:1,y:1})

           

4-6 过期索引

1. 过期索引,顾名思义,是在一段时间后会过期的索引。

2. 在索引过期后,相应的数据会被删除。

3. 这适合存储在一段时间后会是小的数据比如用户登录信息,存储的日志。

4.建立方法:

           db.collection.ensureIndex({time:1},{expireAfterSeconds:10}) 

         //expireAfterSeconds参数用来设定过期索引的过期时间。

4-7 过期索引案例演示

db.newcollection.ensureIndex({time:1},{expireAfterSeconds:30})

db.newcollection.insert({time:new Date()})

按照过期索引配置,{time:new Date()}这条记录,会在30s后被删除。

过期索引的使用限制

1. 存储在过期索引字段的值必须是指定的时间类型。

说明:必须是ISODate或者ISODate数组,不能使用时间戳,否则不能被自动删除。

2. 如果指定了ISODate数组,则按照最小的时间进行删除。

即:若time包含了3个时间,则只有一个时间到达了过期索引的限制时间,他就会被删除。

3.过期索引不能是复合索引。

4.删除时间是不精确的。

说明:删除过程是由后台程序每60s跑一次,而且删除也需要一些时间,所以存在误差。即在数据量不大的情况下,最小时间间隔为60秒。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值