mongodb索引

ThisLX 2020-04-25

  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()

相关推荐