MongoDB 的文档操作-MongoDB 索引
- 索引通常能够极大的提高查询的效率,如果没有索引,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()