mongo shell 之文档 索引

来源:互联网 发布:s曲线加速算法 博客 编辑:程序博客网 时间:2024/06/08 08:26

   对集合创建索引,能大大提升查询查询效率,尤其是对于mongodb 这种存储大数据的数据库,但是并不是索引建的越多越好,集合建立索引,会增加插入和更新,删除时的性能开销,所以,建立索引一定要合理. mongodb 的索引功能是很强大的, 不仅可以对文档的熟悉建立索引,还可以给文档的子文档,数组创建索引, 还可以创建2d索引


1. 创建索引:

    命令格式: db.[collection].ensureIndex({索引字段},{参数})

    1. 创建普通索引: db.student.ensureIndex({name:-1})  //为student 集合创建 name 倒序索引,所以名称默认为: name_-1

    2. 创建唯一索引: db.student.ensureIndex({name:1},{unique:true})  //为student 集合创建name 正序索引, 索引名称默认为: name_1

      

      尝试插入重复name 的文档,会报错

    


    3. 后台创建索引: db.student.ensureIndex({name:-1},{unique:true,backgroud:true})  //创建索引时会锁集合,让其后台去创建,不锁集合

     

    ensureIndex() 方法可接受的参数:

   

2. 查询集合索引:

     命令格式:  db.[collection].getIndexes()

   


3. 查询时强制使用索引:

     命令格式: hint(索引信息), 通过explain() 中的indexName 可以看到查询所使用的索引是什么

   


4. 删除索引:

    命令格式: db.runCommand({dropIndex:"colName",index:"indexName"})

 



5. 索引性能简单测试:

   1. 插入20w 的测试数据:

        var start = new Date()
        for(var i=0; i<200000; i++){
           db.students.insert({_id:i,number:i})
        }   
        var end = new Date()
        end-start

   2. 未创建索引时查询:

     

   3. 创建number 的正序索引

     

   4. 创建索引后查询, 如果想看是否使用了索引,可以使用 explain() 方法:

                




 

1 0
原创粉丝点击