MongoDB聚合查询之分段分组查询统计
简介MongoDB聚合查询之分段分组查询统计
在Mysql中我们经常会用到给某一个字段进行分段统计,然而在MongoDB数据库去处理这个统计应该如何做呢?
数据源说明:
- data:表示集合
- date:表示集合中的日期
- satisfaction:表示集合中的满意度
需求:
- 查询不同满意度分段的人数
db.getCollection("data").aggregate([{
$match: {
date: 20200604
}
}, {
$project: {
"count_field":
{
$switch: {
branches: [
{
case: {
$eq: ["$satisfaction", 100]
},
then: "100"
},
{
case: {
$and: [{
$gte: ["$satisfaction", 95]
}, {
$lte: ["$satisfaction", 100]
}]
},
then: "[95,100)"
},
{
case: {
$and: [{
$gte: ["$satisfaction", 90]
}, {
$lte: ["$satisfaction", 95]
}]
},
then: "[90,95)"
},
{
case: {
$and: [{
$gte: ["$satisfaction", 85]
}, {
$lte: ["$satisfaction", 90]
}]
},
then: "[85,90)"
},
{
case: {
$and: [{
$gte: ["$satisfaction", 80]
}, {
$lte: ["$satisfaction", 85]
}]
},
then: "[80,85)"
},
{
case: {
$eq: ["$satisfaction", 0]
},
then: "0"
},
],
default: "(0,80)"
}
}
}
}, {
$group: {
_id: "$count_field",
"总数": {
$sum: 1
}
}
}, {
$sort: {
"_id":1
}
}])
查询说明:
- match:条件匹配
- project:核心部分,这里使用了switch,进行条件判断,branches是固定的写法,不要修改
- group:进行分组,根据project中的字段count_field作为分组字段
- sort:排序,根据group中的_id
结果展示:

在使用阿里云RDS中,一般我们出于权限的考虑不会让其他用户直接进行外网访问。所以这里我们就采用Navicat加HTTP通道来访问RDS数据库。
《血色湘西》瞿先生临死前的独白,振奋人心。
Excel如何取最大值、最小值、排名第几的数据,这些都是在我们使用Excel中非常常用的功能。本文主要介绍下这几种函数的使用。
有向图根无向图的最大区别在于有向图是具有方向的,所以在实现上也会有很大的不同。
lsof命令的全称为:list open file,也就是列出系统中已经打开的文件,通过该命令就可以根据文件找到对应的进程信息,也可以根据进程信息找到进程打开的文件。 如果系统中没有lsof名,可以使用后面的命令进行安装:yum -y install lsof
快速生成表格
Electron页面跳转、浏览器打开链接和打开新窗口
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。
Docker编译镜像出现:fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory问题
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。