006_MongoDB索引类型-基础索引、复合索引、文档索引、唯一索引
9. MongoDB索引类型-基础索引、复合索引、文档索引、唯一索引
基础索引、 db.tests.ensureIndex({"age":1});
background Boolean 建索引过程会阻塞其它数据库操作,background可指定以后台方式创建索引,即增加 "background" 可选参数。 "background" 默认值为false。
复合索引、
为多个字段联合创建索引就是复合索引。
db.users.ensureIndex({age:1, city:-1})
1. 查询字段要在索引中存在,且顺序一致;
2. 首个字段必须出现。 没有出现在查询条件中,则不会用索引。
文档索引、
MongoDB可以为一个或多个字段创建索引,当字段是子文档时,同样可以创建索引。
{name:"IT", address:{ city:"北京", district:"海淀区" }}
可以为address子文档创建索引如下: db.users.ensureIndex({address:1})
建立索引后,查询时子文档的字段顺序要和查询顺序一致:
// 会使用索引
db.users.find({address:{ city:"北京", district:"海淀区" }})
// 不会使用索引
db.users.find({address:{ district:"海淀区", city:"北京" }})
对子文档创建索引时,也可以只对某一个或几个字段创建索引:
db.users.ensureIndex({"address.city":1})
唯一索引
db.users.ensureIndex({email:1}, {unique:true})
强制使用索引
使用hint()函数来强制使用索引。hint()在查询中是非常有效的一种优化手段:
age字段创建过索引,可以使用hint()来强制使用索引查询:
db.users.find({name:'IT', age:3}).hint({age:1})

浙公网安备 33010602011771号