mongodb索引

Posted wxxiong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongodb索引相关的知识,希望对你有一定的参考价值。

  1. 查看执行计划

    db.find(query).explain()

              “cursor”:“BasicCursor”   --说明没有索引

    “nscannedObjects”:1000  --理论上要扫描的行数

    “cursor”: “BasicCursor sn_1” --用到了btree索引

  2. 查看索引

    db.stu.getIndexes()    

  3. 创建索引

    db.stu.ensureIndex({name : 1/ -1})  -- 1:正序, -1: 倒序

         db.collection.ensureIndex({field1: 1/-1, field2: 1/-1})  --创建多列索引

  4. 删除索引

         db.stu.dropIndex({name : 1})     -- 删除索引时需要将索引类型加上

    db.stu.dropIndexes();               --删除所有自定义的索引

  5. 子文档查询

    {name:‘NoKia‘,spc:{weight:100, area:‘taiwan‘}}

    db.shop.find({‘spc.area‘:‘taiwan‘}); --用.号将子文档的属性连起来

  6. 子文档创建索引

    db.shop.ensureIndx({‘spc.area‘ : 1})

  7. 索引类型

    单列索引、所列索引、子文档索引

  8. 索引性质

    普通索引、唯一索引、稀疏索引、哈希索引

  9. 创建唯一索引

    db.tea.ensureIndex({email:1},{unique:true});    -- 第二个对象{unique:true} 表示创建唯一索引

  10. 创建稀疏索引

    普通索引创建的时候,如果当前列为null则会创建索引,而稀疏索引则不会再该列上创建索引

    db.tea.ensureIndex({emial:1}, {sparse : true });  --第二个对象{sparse:true} 表示创建稀疏索引

  11. 创建hash索引

    db.tea.ensureIndex({email : ‘hashed‘});   --参数‘hashed‘指定创建hash索引

  12. 重建索引

    一张表经过多次修改后,导致表的文件产生空洞,索引也是如此,可以通过重建索引来提高索引的效率,类似mysql的optimize表

    db.collection.reIndex()

以上是关于mongodb索引的主要内容,如果未能解决你的问题,请参考以下文章

mongodb建立索引&查看索引&删除索引

mongodb 每次都要创建索引吗

[MongoDB]索引

求助mongodb 有索引后查询卡死问题

MongoDB基础

MongoDB的索引操作