MongoDB索引Index
1.Scrapy_ImagePipeline保存图片2.Scrapy 保存数据案例-小说保存3.Scrapy 中 CrawlSpider 使用(一)4.Scrapy 中 CrawlSpider 使用(二)5.Scrapy 中 Request 的使用6.Scrapy_Request对象meta演示7.Scrapy_Request对象dont_filter演示8.Scrapy_Request对象Cookie的演示9.Scrapy_FormRequest对象的使用10.Scrapy中下载中间件11.Scrapy_下载中间件设置UserAgent12.Scrapy 中 Downloader 设置代理13.下载中间件实战-Scrapy与Selenium结合14.MongoDB介绍15.Mongo_如果快速学习Mongo16.Windows安装与启动MongoDB17.MongoDB通过配置文件管理参数18.Linux安装MongoDB19.什么是Docker20.为什么要使用Docker21.Docker核心概念22.Docker安装23.Docker核心命令_镜像命令24.Docker核心命令_容器命令25.Docker核心命令_其他命令26.Docker 安装 MongoDB27.MongoDB基础命令28.MongoDB数据的增加29.MongoDB数据的更新30.MongoDB删除文档31.MongoDB数据的查询32.Docker数据管理_为什么使用数据卷33.Docker数据管理_配置数据卷34.Docker数据管理_数据卷容器35.Docker实战_Mysql数据卷挂载36.MongoDB聚合操作之分组、过滤37.MongoDB聚合操作之排序、分页
38.MongoDB索引Index
39.Mongo中唯一索引\复合索引40.mongodb和python交互41.Splash反爬42.Dockerfile完全指南_什么是Dockerfile43.Dockerfile完全指南_构建镜像44.Dockerfile完全指南_常见的13种指令上45.Docker网络管理_Docker0网络详解46.Docker网络管理_四种网络模式47.Docker网络管理_自定义网络48.Scrapy保存数据到多个数据库49.Splash与requests结合50.Splash与Scrapy结合51.图片验证码介绍52.验证码-手动输入53.超级鹰识别验证码54.移动端爬虫55.移动端工具的安装56.模拟器配置57.Appium介绍58.Appium环境搭建 - Android SDK安装59.Appium环境搭建 - Appium安装60.appium实战61.滑动验证码-保存图片62.滑动验证码-获取滑动长度63.滑动验证码-编辑移动轨迹64.滑动验证码-移动滑块65.LOL皮肤66.Python调用 JS -PyExecJS, Python 调用 JS -js2pyMongoDB索引Index
索引概述
索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录
这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对应用的性能是非常致命的
创建索引
MongoDB使用 createIndex() 方法来创建索引
db.集合名.createIndex(keys, options)
语法中 Key 值为要创建的索引字段,1 为指定按升序创建索引,如果想按降序来创建索引指定为 -1 即可
注意
- 在 3.0.0 版本前创建索引方法为 db.collection.ensureIndex(),之后的版本使用了 db.collection.createIndex() 方法,ensureIndex() 还能用,但只是 createIndex() 的别名
- MongoDB默认所有的集合在_id字段上有一个索引。
样例
db.person.createIndex({"name":1})
索引的查看
默认情况下_id是集合的索引,查看方式:
db.集合名.getIndexes()
删除索引
语法
db.集合名.dropIndex({'索引名称':1})
样例
db.person.dropIndex({name:1})
db.person.getIndexes()
检测索引的速度优势
测试:插入10万条数据到数据库中
插入数据:
for(i=0;i<100000;i++){db.t1.insert({name:'test'+i,age:i})}
创建索引前:
db.t1.find({name:'test10000'})
db.t1.find({name:'test10000'}).explain('executionStats') # 显示查询操作的详细信息
创建索引:
db.t1.creatIndexIndex({name:1})
创建索引后:
db.t1.find({name:'test10000'}).explain('executionStats')
//////////////////////
//创建索引
db.person.createIndex({'name':1});
//查看索引
db.person.getIndexes();
//删除索引
db.person.dropIndex({'name':1});
//测试索引可以提高搜索速度
for(i=0;i<10000;i++){
db.t1.insert({'name':'test'+i,'age':i})
};
db.t1.find();
db.t1.find({'name':'test999'}).explain('executionStats');
db.t1.getIndexes();
db.t1.createIndex({'name':1});
db.t1.getIndexes();
db.t1.find({'name':'test999'}).explain('executionStats');
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库