MongoDB索引

来源:互联网 发布:eraser软件 编辑:程序博客网 时间:2024/06/05 06:44

1. db.col.getIndexes()查看当前集合的索引情况

2. db.col.ensureIndex({x:1})创建索引

3.0版本后推荐使用createIndex()来创建索引

如果文档数目较多,创建索引需要消耗一定的时间。如果系统负载较重,且有很多已经存在的文档,不能直接使用这个命令进行直接创建。需要在使用数据库之前就将索引创建完毕。否则严重影响数据库的性能。在线上服务时,对常用的查询一定要添加相应的索引。由于索引需要在插入数据之后再次构建,所以添加索引会对写入造成一定的性能影响。但是为了查询的高效,这点影响是值得的。

3. 索引的种类

  • _id索引
  • 单键索引
  • 多键索引
  • 复合索引
  • 过期索引
  • 全文索引
  • 地理位置索引

_id索引

  • _id索引是绝大多数集合默认建立的索引。
  • 对于每个插入的数据,MongoDB都会自动生成一条唯一的_id字段。

单键索引

  • 单键索引是最普通的索引
  • _id索引不同,单键索引不会自动创建。

多键索引

  • 多键索引与单键索引创建形式相同,区别在于字段的值。
    • 单键索引:值为一个单一的值,例如字符串,数字或者日期。
    • 多键索引:值具有多个记录,例如数组。

复合索引

  • 当我们的查询条件不只有一个时,就需要建立复合索引。

过期索引

  • 过期索引:是在一段时间后会过期的索引。
  • 在索引过期后,相应的数据会被删除。
  • 这适合存储一些在一段时间之后会失效的数据比如用户的登录信息、存储的日志。
db.collection.ensureIndex({time:1},{expireAfterSeconds:10})
  • 存储在过期索引字段的值必须是指定的时间类型。
    • 说明:必须是ISODate或者ISODate数组,不能使用时间戳,否则不能被自动删除。
  • 如果指定了ISODate数组,则按照最小的时间进行删除。
  • 过期索引不能是复合索引。
  • 删除时间不是精确的。
    • 说明:删除过程是由后台程序每60s跑一次,而且删除也需要一些时间,所以存在误差。

全文索引

全文索引:对字符串与字符串数组创建全文可搜索的索引。
适用情况:{author:"",title:"",article:""}

  • 建立方法(一个数据集合中只允许创建一个全文索引):
    db.articles,ensureIndex({key:"text"})
    db.articles,ensureIndex({key_1:"text",key_2:"text"})
    db.articles,ensureIndex({"$**":"text"})
db.articles.ensureIndex({"article":"text"})
  • 如何使用全文索引查询
db.articles.find({$text:{$search:"coffee"}})db.articles.find({$text:{$search:"aa bb cc"}})     // 或db.articles.find({$text:{$search:"aa bb -cc"}})    //不包含cc db.articles.find({$text:{$search:"\"aa\"\"bb\"\"cc\""}})  // 与
  • 全文索引相似度
    $meta操作符:{score:{$meta:"textScore"}}
    写在查询条件后面可以返回结果的相似度。
    与sort一起使用,可以达到很好的实用效果。
db.articles.find({$text:{$search:"aa bb"}},{score:{$meta:"textScore"}}).sort({score:{$meta:"textScore"}})
  • 全文索引非常强大,但是同样存在限制
    • 每次查询,只能指定一个$text查询
    • $text查询不能出现在$nor查询中
    • 查询中如果包含了$texthint不再起作用
    • 很可惜,MongoDB全文索引还不支持中文
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 张真英 张睿家 小泽玛莉亚 张睿家 张睿恩 张裕干白葡萄酒 大狼狗干张柔全文 李浩干王雪琴是第几张 张石川 常石磊蒙面唱将 镇魂碑 张无忍 张硕铺 张碧辰 张碧成 几首 万钟则不辩礼义而受之 万钟则不辨礼义而受之 孟子论仁礼义 张礼义 礼泉天驿花园酒店 礼轻情意重的上一句 张社年 张家三叔 异能小神农 异能小神农 张家三叔 导能小神农张三叔 我终结神明 我终结了神明 终结神明 要听神明的话 神明 神明物语兑换码 请听神明的话木兮娘 末日与神明 末日神明 总是怀上神明怎么办 神明时代 无惧神明 神武印记 祥发传媒 张祥青 张禄籴 张福庆