Java MongoDB:(十五)MongoDB 的文档操作-MongoDB 索引-6800字匠心出品

本文详细介绍了MongoDB的索引操作,包括创建、查看、修改和删除索引,以及各种索引类型如单字段、复合、多key和部分索引。此外,讨论了索引的额外属性如唯一性、部分性和稀疏性,强调了合理创建索引的重要性,包括查询计划和注意事项,提醒开发者避免不必要的索引开销,以提高数据库性能。
摘要由CSDN通过智能技术生成

  • 索引通常能够极大的提高查询的效率,如果没有索引,MongoDB 在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。
  • 这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对系统的性能是非常致命的。
  • 索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构

1.创建索引

  • 在 MongoDB 中会自动为文档中的_Id(文档的主键)键创建索引,与关系型数据的主键索引类似。
  • 我们可以使用 createIndex()函数来为其他的键创建索引。在创建索引时需要指定排序规则。1 按照升序规则创建索引,-1 按照降序规则创建索引。
  • 在创建索引时,需要使用具有 dbAdmin 或者 dbAdminAnyDatabase 角色的用户。
  • 语法格式:db.COLLECTION_NAME.createIndex({创建索引的键:排序规则,…},{创建索引的参数(可选参数)})
  • 参数说明
    设置
  • 为 dev 集合中的 title 键创建索引,并让创建工作在后台运行
    设置

2.查看索引

2.1 查看集合索引

  • 我们可以通过 getIndexes()或者 getIndexSpecs()函数查看集合中的所有索引信息
  • 语法格式:db.COLLECTION_NAME.getIndexse()
  • 语法格式:db.COLLECTION_NAME.getIndexSpecs()
  • 使用 getIndexes()函数查看当前 dev 集合中的索引
    设置
  • 使用 getIndexSpecs()函数查看当前 dev 集合中的索引
    设置

2.2 查看索引键

  • 我们可以通过使用 getIndexKeys()函数查看集合的索引键。
  • 语法格式:db.COLLECTION_NAME.getIndexKeys();
  • 查看 dev 集合中的索引键
    设置

2.3 查看索引大小

  • 我们可以通过 totalIndexSize()函数来查看当前集合中索引的大小,单位为字节。
  • 语法格式:db.COLLECTION_NAME.totalIndexSize(detail)
  • 参数解释:detail 可选参数,传入除 0 或 false 外的任意数据,那么会显示该集合中每个索引的大小及集合中索引的总大小。如果传入 0 或 false 则只显示该集合中所有索引的总大小。默认值为 false。
  • 查看 dev 集合中所有索引的总大小
    设置
  • 查看 dev 集合中的每个索引的大小以及总大小
    设置

3.修改索引

  • MongoDB 没有单独的修改索引函数,如果要修改某个索引,需要先删除旧的索引,再创建新的索引。

4.删除索引

4.1 删除集合中的指定索引

  • 我们可以通过 dropIndex()函数来删除指定索引
  • 语法格式:db.COLLECTION_NAME.dropIndex(“索引名称”)。
  • 删除 title 键的索引
    设置

4.2 删除集合中的全部索引

  • 我们可以使用 dropIndexes()函数删除集合中的全部索引,_id 键的索引除外。
  • 语法格式:db.COLLECTION_NAME.dropIndexes()
    设置

5.重建索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

地球村公民

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值