索引 : 相当于书的目录 mongodb限制每个集合上最多有64个索引 通常,一个特定的集合中不应该有两个以上的索引
db.coll.ensureIndex({"name" : 1}) // 创建索引 在已有的文档上建索引比先建索引再插入文档快
db.coll.dropIndex("name_1") // 删除索引
db.coll.getIndexes() // 查看索引
复合索引 :
选择键的方向 :
db.coll.ensureIndex({"name" : 1, "age" : 1}) // 创建复合索引 值为1代表升序,值为-1代表降序 创建复合索引时可以根据实际情况来创建
db.coll.ensureIndex({"name" : -1, "age" : 1}) // 和{"name" : 1, "age" : -1}效果一样
db.coll.find({"name" : "hhh"}).explain()
使用覆盖索引 :
指定不需要返回的值如"_id" db.coll.find({}, {"_id", 0})
隐式索引 :
abcd索引 就可以使用abc ab a索引,但是b ac等是不行的
注意索引的前后顺序 {"name" : 1, "age" : 1} 和 {"age" : 1, "name" : 1}是不一样的,如果有范围查询,应该先将精确查询的索引放前面,再将范围查询的索引放在后面
使用索引时$or的的查询效率没有$in高
索引对象和数组 :
索引嵌套文档 :
db.coll.ensureIndex({"cont.name" : 1})
可以为文档建索引 : 必须查询整个文档所有字段匹配时才起作用
也可以为文档中的字段建索引
索引数组 :
db.coll.ensureIndex({"cont.name" : 1})
不能索引整个数组
可以对数组中的字段建索引,实际上是对数组中每个相同的字段建索引
一个索引中的数组字段最多有一个
索引的基数 : 索引的字段不同值的数量 一般在基数大的字段建索引效果更好
db.coll.find().hint({"name" : 1}).explain() // hint的作用是强制使用某个索引 explain的作用是查看查询信息 : allPlans字段显示了查询计划
db.coll.find().hint({"$natural" : 1}) // 对于大小不经常变动的文档,强制使用全表扫描
唯一索引 : 如果文档中没有索引键对应的值会被插入null
db.coll.ensureIndex({"name" : 1}, {"unique" : true}) // 唯一索引,键所对应的值是唯一的 键大小超过1KB就不会受到唯一索引的约束了
db.coll.ensureIndex({"name" : 1}, {"unique" : true, "dropDups" : true}) // 强制建立唯一索引,重复值只取第一个
稀疏索引 : 被索引的键可有可无 可以强制全表扫描来解决
db.coll.ensureIndex({"name" : 1}, {"sparse" : true}) //
db.coll.ensureIndex({"name" : 1}, {"unique" : true, "sparse" : true}) // 解决唯一索引会插入空值得情况
mongodb 创建ascending索引 mongodb 建立索引
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章