MongoDB的count() 统计文档数量非常慢

在MongoDB中,count()函数用于统计文档的数量。但是count()函数通常不会使用索引来计算文档数量,而是扫描集合中的文档来计数。当数据量较大的时候,就不适合使用了。

解决方案:

1、使用聚合框架(aggregation framework)。虽然count()方法方便快捷,但在某些复杂场景中,使用聚合框架可能会更灵活和强大。

2、使用索引,直接find()查询文档,只要命中索引,查询速度比count()效率高很多。如果还需要分页之类的操作,可以在程序中对查询出来的文档集合直接分页。

我的数据库大约有2000万数据,我是用的是索引的方式:

count统计没有命中索引,需要7秒钟

只有find根据条件查询,命中索引,只需要0.2秒

相关推荐
小冷coding13 小时前
【MySQL】MySQL 插入一条数据的完整流程(InnoDB 引擎)
数据库·mysql
鲨莎分不晴14 小时前
Redis 基本指令与命令详解
数据库·redis·缓存
专注echarts研发20年14 小时前
工业级 Qt 业务窗体标杆实现・ResearchForm 类深度解析
数据库·qt·系统架构
周杰伦的稻香17 小时前
MySQL中常见的慢查询与优化
android·数据库·mysql
冉冰学姐17 小时前
SSM学生社团管理系统jcjyw(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·学生社团管理系统·多角色管理
nvd1118 小时前
深入分析:Pytest异步测试中的数据库会话事件循环问题
数据库·pytest
appearappear18 小时前
如何安全批量更新数据库某个字段
数据库
·云扬·19 小时前
MySQL 常见存储引擎详解及面试高频考点
数据库·mysql·面试
羊小猪~~19 小时前
【QT】--文件操作
前端·数据库·c++·后端·qt·qt6.3
coding-fun19 小时前
电子发票批量提取导出合并助手
大数据·数据库