mongodb索引
- 查看执行计划
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()