建索引会锁表
一、添加索引
1、给name字段加普通索引
db.cntest3.ensureIndex({name:1})
2、给name字段加唯一索引
db.cntest3.ensureIndex({name:1}, {unique:true})
添加后该字段的值不允许重复
3、复合索引
db. cntest3.ensureIndex({uid:1, course:1})
复合索引是前置索引,与mysql类似
4、创建索引并命名
db. cntest3.ensureIndex({uid:1 }, {name:"index1"})
二、删除索引
1、根据索引字段删除索引
db.cntest3.dropIndex({name:1})
2、根据索引名称删除索引
db. cntest3.dropIndex("index1")
三、查看索引
1、查看指定集合索引
db.cntest3.getIndexes()
2、查看系统所有索引
db.system.indexes.find()
四、hint指定使用某个索引
1、指定使用index1
db.scores.find({uid:"u1"}).hint("index1")
2、指定不使用索引,强制全表扫描
db.scores.find({uid:"u1"}).hint({$natural:1})