Mongodb中count($condition)查询非常慢?_mongodb countdocuments 查询效率低-程序员宅基地

技术标签: mongo  MongoDb  

问题

最近项目中有使用到MongoDb,但是发现接口的速度异常的缓慢,最终定位到是Mongodb count()查询的问题

数据库中的文档数量
count()带条件的情况下的查询时间16s(这是我本地的测试环境性能较差,线上的服务器8核16G内存大概需要1.6s左右)
本地虚拟机查询的效果

解决办法

  • 添加索引
  • 修改查询语句,并命中索引
    索引不能被查询使用:$regex,$nin, $not, $mod, $where 子句
    集合中索引不能超过64个,索引名的长度不能超过128个字符,一个复合索引最多可以有31个字段
    由于索引是存储在内存(RAM)中,你应该确保该索引的大小不超过内存的限制。如果索引的大小大于内存的限制,MongoDB会删除一些索引,这将导致性能下降
    现有的索引字段的值超过索引键的限制,MongoDB中不会创建索引。
    检测语句是否使用索引,可以用explain来查看
添加索引

在这里插入图片描述

创建索引

结果在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_37186127/article/details/92807567

智能推荐

机器人门禁控制盒怎么接线方法_一文读懂弱电工程门禁系统知识,有施工规范,有安装教程...-程序员宅基地

文章浏览阅读1k次。门禁系统我们是见过使用最多的系统,所以有些门禁知识我们是必须掌握的,比如今天的门禁系统施工规范,大家可以学习一下正文:一、 电缆1、RS-485总线电缆采用通讯电缆屏蔽双绞线,阻抗为120欧(超5类线)2. 读卡数据线采用八芯屏蔽通讯电缆。3. 接地电缆采用单线铜芯电源线,阻抗≤4欧。二、 布线规则1. 总线采用统一型号的电缆,不得在不同段使用不同型号(厂家)的电缆。2. 总线布线时避免分支,如果..._门磁开关接什么线

集成显卡安装pytorch_intel 显卡怎么安装pytorch-程序员宅基地

文章浏览阅读1.4w次,点赞12次,收藏45次。Inter集成显卡安装pytorch安装pytorch计算机右键“管理”->“设备显示器”->“显示适配器”,查看显卡。我的电脑只有Inter的集成显卡,没有独显。刚开始接触,对GPU不懂,查了些资料,了解到一些内容。GPU可以认为是显卡的CPU,主要处理高度线程化的并行处理任务(大规模计算任务)。CUDA是面向Nvidia的GPU的,所以,如果要搭建CUDA环境必须要有nvidia显卡。集成显卡是显卡集成在主板上的。但是不管是集显还是独显都有GPU。安装pytorchpytorch_intel 显卡怎么安装pytorch

模拟CMOS集成电路设计中的gm/id设计方法及用Cadence Virtuoso IC617仿真有关参数曲线-程序员宅基地

文章浏览阅读5w次,点赞216次,收藏909次。模拟CMOS集成电路设计中的gm/id设计方法及用Cadence Virtuoso IC617仿真有关参数曲线_gm/id

windows自动启动程序并登陆账号密码的VBS脚本_win7自动重启脚本写入账号-程序员宅基地

文章浏览阅读1w次,点赞8次,收藏36次。windows自动启动程序并登陆账号密码的VBS脚本备注:这是VBS脚本,中间的TAB次数根据不同的程序会有不同的差异,请自行调整 类似qq一类的程序,经测试可以实现,其他程序没有尝试,初学者,如有疑问可下方评论沟通。dim programprogram="程序路径"set Wshell=CreateObject("Wscript.Shell")set oexec=Wshell.E..._win7自动重启脚本写入账号

ZZULIOJ-1059,最高分(Java)_java输出最高分学院姓名-程序员宅基地

文章浏览阅读8.3k次。题目描述:输入一批学生的成绩(整数),输出最高分。 输入:输入包含多个非负整数和一个负整数。该负数不作为有效成绩,只表示输入结束。 输出:输出一个整数,即最高分。单独占一行。 样例输入:7 6 5 9 2 -1样例输出:9程序代码:import java.util.*;public class Main{ ..._java输出最高分学院姓名

SpringBoot集成Mybatis实现多表查询(XML版)_mybatis concat(#{sysregion.code,jdbctype=varchar},-程序员宅基地

文章浏览阅读3.2k次。1,EnginCheckOrder(头表实体)public class EnginCheckOrder implements Serializable { private String id; private String checkOrderCode; private String contractCode; private String jobCod..._mybatis concat(#{sysregion.code,jdbctype=varchar},'___')

随便推点

Unity 使用Navgation自动寻路绘制导航路线_navmeshagent绘制路线-程序员宅基地

文章浏览阅读641次,点赞2次,收藏5次。将所在平面和相应障碍物设置静态(Navgation static),调出Navgation面板烘焙路径。_navmeshagent绘制路线

计算机组成原理——关于数据对齐存储-程序员宅基地

文章浏览阅读458次。计算机组成原理——关于数据对齐存储1. 综述  博客:http://blog.csdn.net/cyxcw1/article/details/9080519(C/C++数据边界对齐的注意事项)  对齐:变量的起始地址为其大小的整数倍。如short型占两个字节,其起始地址就要从偶数地址开始。  对齐可以加快内存的访问速度。转载于:https://www.cnblogs.com...

Networking 基本术语/概念-程序员宅基地

文章浏览阅读1.3k次。目录文章目录目录基本概念冲突域(Collision Domain)广播域(Broadcast Domain)冲突域与广播域的区别IP 网络数据传输方式物理网络设备发展简述中继器(Repeater)集线器(hub)网桥(bridge)网桥的工作原理网桥基于 MAC 的转发原理网桥的核心作用网桥的主要缺点交换机(Switch)交换机的工作原理网桥与交换...

Linux部署甜糖星愿服务教程_甜糖二进制部署-程序员宅基地

文章浏览阅读7.9k次,点赞9次,收藏31次。Linux 通过 Docker 部署甜糖星愿服务,利用空闲带宽挂机赚钱此教程适用于ARM架构的机器,比如树莓派等。群晖NAS搭建甜糖星愿服务教程:https://www.awsl9527.cn/archives/539.html威联通NAS搭建甜糖星愿服务教程:https://blog.zeruns.tech/archives/627.html甜糖星愿计划甜糖星愿计划是由甜糖公司结合边缘计算云厂商推出的用户激励计划。用户通过贡献闲置带宽,即可获取星愿积分。星愿可用于折现或兑换商品。收益情况:按测_甜糖二进制部署

(转)C++中虚函数功能的实现机制-程序员宅基地

文章浏览阅读46次。C++中虚函数功能的实现机制要理解C++中虚函数是如何工作的,需要回答四个问题。1、 什么是虚函数。虚函数由于必须是在类中声明的函数,因此又称为虚方法。所有以virtual修饰符开始的成员函数都成为虚方法。此时注意是virtual修饰的成员函数不是virtual修饰的成员函数名。例如:基类中定义: virtual void...

JAVA实现代理转发POST请求并返回参数_java实现代理转发请求-程序员宅基地

文章浏览阅读3.3k次。这样由A端发起得请求,经过nginx转发到B端得业务代码里,B端再拿到参数后,再发起请求到C端,等C端处理后,结果返回B端,B端将报文返回到A端,整个流程就可以了。_java实现代理转发请求