MongoDB-索引
什么是索引
- 索引就相当于字典中的目录(拼音 / 偏旁部首手)
- 有了目录我们就能通过目录快速的找到想要的结果
- 但是如果没有目录(拼音 / 偏旁部首手), 没有索引
- 那么如果想要查找某条数据就必须从前往后一条一条的查找
- 所以, 索引就是用于提升数据的查询速度的
?> 插入测试数据:
db.person.insert([
{name:'cs', age:19},
{name:'as', age:18},
{name:'bs', age:17},
]);
如何获取索引
- 格式如下:
db.<collection>.getIndexes()
- 示例:
db.person.getIndexes();
如何创建索引
- 格式如下:
db.<collection>.createIndex({<field>: <1 or -1>, ...}, <options>)
-
<field>: 指定创建索引的字段(后面的数字分别代表:1 升序,-1 降序)
-
<options>: 索引的额外配置
-
示例:
db.person.createIndex({name: 1})
如上索引创建之后的数据结构如下,给的是 1 所以是从大到小:
as: -> {name: 'as', age: 18}
bs: -> {name: 'bs', age: 17}
cs: -> {name: 'cs', age: 19}
如果是 -1 那么对应的数据结构同理可证是从小到大了。
创建单键索引
db.person.createIndex({name: 1})
查看是否使用索引
-
和 MySQL 一样, 我们可以通过
explain
来查看索引效果 -
格式如下:
db.<collection>.explain().<method()>
- 示例:
db.person.explain().find({name: 'as'})
在查询的结构当中只需要关心,winningPlan
的这个 key 对应的 stage
的取值即可,stage 不同取值所对应的含义如下:
- winningPlan -> stage -> COLLSCAN -> 遍历整个集合查询
- winningPlan -> stage -> IXSCAN -> 通过索引查询
- winningPlan -> stage -> FETCH -> 根据索引存储的地址取出对应文档
!> 和 MySQL 一样, MongoDB 默认也会为主键自动创建索引
db.person.getIndexes();
!> 如果查询条件中只需要查询出索引字段, 那么就不会再取出完整文档, 这样效率更高
db.person.explain().find({name: 'as'}, {_id: 0, name: 1})
分类:
MongoDB4.X+新特性
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具