mongoDB索引
1、_id索引
查看集合的索引情况,初始情况下有_id一个索引
>db.COLLECTION_NAME.getIndexes()
2.单键索引
最普通的索引,单键索引不会自动创建
>db.COLLECTION_NAME.ensureIndex({KEY:1})
语法中 Key 值为你要创建的索引字段,1为指定按升序创建索引,如果你想按降序来创建索引指定为-1即可。
如果数据量非常大,创建索引需要消耗一定的时间,这时需要在使用数据库之前就将索引创建完毕,否则会对数据库性能造成较大影响。
3.多键索引
多建索引与单键索引创建形式相同,区别在于多键索引多值具有多条记录,例如数组:
db.collection.insert({x:[1,2,3,4,5]})
4.复合索引
当我们的查询条件多个时,就需要建立复合索引
db.collection.ensureIndex({"i":1,"j":-1})
索引被创建后,基于i和j的查询将会用到该索引,或者是基于i的查询也会用到该索引,但是只是基于j的查询将不会用到该复合索引。因此可以说,如果想用到复合索引,必须在查询条件中包含复合索引中的前N个索引列。然而如果查询条件中的键值顺序和复合索引中的创建顺序不一致的话,MongoDB可以智能的帮助我们调整该顺序,以便使复合索引可以为查询所用。
5.过期索引:
是在一段时间后会过期的索引;在索引过期后,相应的数据会被删除;适合存储用户登录信息等。
创建一个10秒过期的索引:
db.collection.ensureIndex({time:1},{expireAfterSeconds:10})
- 存储在过期索引字段的值必须是指定的时间类型,必须是ISODate或者ISODate数组,不能使用时间戳,否则不能被自动删除
- 如果指定了ISODate数组,则按照快到期的时间进行删除
- 过期索引不能是复合索引
- 删除时间是不精确的,删除过程是由后台程序每60s跑一次,而且删除也需要一些时间,所以存在误差
浙公网安备 33010602011771号