MongoDB聚合运算之group和aggregate聚集框架简单聚合(10)
聚合运算之group
语法:
db.collection.group(
{
key:{key1:1,key2:1},
cond:{},
reduce: function(curr,result) {
},
initial:{},
finalize:function() {
}
}
)
key: 分组字段
cond:查询条件
reduce:聚合函数
initial:初始化
finalize:统计一组后的回调函数
#查询每个栏目下的商品数量
db.goods.group(
{
key:{cat_id:1},
cond:{},
reduce:function(curr,result) {
result.cnt += 1;
},
initial:{cnt:0}
}
)
#查询每个栏目下价格高于50元的商品数量
db.goods.group(
{
key:{cat_id:1},
cond:{shop_price:{$gt:50}},
reduce:function(curr,result) {
result.cnt += 1;
},
initial:{cnt:0}
}
)
#每个栏目下的商品库存量 sum()操作
db.goods.group(
{
key:{cat_id:1},
cond:{},
reduce:function(curr,result) {
result.num += curr.goods_number;
},
initial:{num:0}
}
)
#查询每个栏目最贵的商品价格, max()操作
db.goods.group(
{
key:{cat_id:1},
cond:{},
reduce:function(curr , result) {
if(curr.shop_price > result.max) {
result.max = curr.shop_price;
}
},
initial:{max:0}
}
)
#查询每个栏目下商品的平均价格
db.goods.group(
{
key:{cat_id:1},
cond:{},
reduce:function(curr , result) {
result.cnt += 1;
result.sum += curr.shop_price;
},
initial:{sum:0,cnt:0},
finalize:function(result) {
result.avg = result.sum/result.cnt;
}
}
)
使用aggregate聚集框架简单聚合
#查询每个栏目下的商品数量
db.collection.aggregate
(
[
{$group:{_id:"$cat_id",total:{$sum:1}}}
]
);
#查询goods下有多少条商品,select count(*) from goods
db.collection.aggregate
(
[
{$group:{_id:null,total:{$sum:1}}}
]
)
#查询每个栏目下 价格大于50元的商品个数
db.collection.aggregate
(
[
{$match:{shop_price:{$gt:50}}},
{$group:{_id:"$cat_id",total:{$sum:1}}}
]
)
#查询每个栏目下 价格大于50元的商品个数
#并筛选出"满足条件的商品个数" 大于等于3的栏目
db.collection.aggregate
(
[
{$match:{shop_price:{$gt:50}}},
{$group:{_id:"$cat_id",total:{$sum:1}}},
{$match:{total:{$gte:3}}}
]
)
#查询每个栏目下的库存量
db.collection.aggregate
(
[
{$group:{_id:"$cat_id" , total:{$sum:"$goods_number"}}},
]
)
#查询每个栏目下的库存量,并按库存量排序
db.collection.aggregate
(
[
{$group:{_id:"$cat_id" , total:{$sum:"$goods_number"}}},
{$sort:{total:1}}
]
)
#查询每个栏目下的库存量,并按库存量排序
db.collection.aggregate
(
[
{$group:{_id:"$cat_id" , total:{$sum:"$goods_number"}}},
{$sort:{total:1}},
{$limit:3}
]
)
#查询每个栏目的商品平均价格,并按平均价格由高到低排序
db.collection.aggregate
(
[
{$group:{_id:"$cat_id" , avg:{$avg:"$shop_price"}}},
{$sort:{avg:-1}}
]
)
MongoDB聚合运算之group和aggregate聚集框架简单聚合(10)相关推荐
- 时序数据库如何支持秒级上亿数据的查询分组和聚合运算
https://mp.weixin.qq.com/s?__biz=MzA5NzkxMzg1Nw==&mid=2653162499&idx=1& sn=ca43c74ef541b ...
- R语言按组聚合求和实战(sum a variable by group):使用aggregate函数按组聚合求和、使用tapply函数按组聚合求和、按组聚合求和(使用dplyr包)
R语言按组聚合求和实战(sum a variable by group):使用aggregate函数按组聚合求和.使用tapply函数按组聚合求和.按组聚合求和(使用dplyr包) 目录
- C# 中奇妙的函数–6. 五个序列聚合运算(Sum, Average, Min, Max,Aggregate)
今天,我们将着眼于五个用于序列的聚合运算.很多时候当我们在对序列进行操作时,我们想要做基于这些序列执行某种汇总然后,计算结果. Enumerable 静态类的LINQ扩展方法可以做到这一点 .就像之前 ...
- 选择列表中的列 '.......' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
错误:消息 8120,级别 16,状态 1,第 51 行 选择列表中的列 'Employee.EmployeeID' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中. 题目:查询最低收入 ...
- 简化 MongoDB 关联运算
[摘要] MongoDB提供的 lookup 对多表关联实现了基本的支持,但面对一些比较复杂的关联情况,往往会遇到 shell 脚本过于复杂的问题.而集算器 SPL 语言,则因其离散性.易用性恰好能弥 ...
- 选择列表中的列……无效,因为该列没有包含在聚合函数或 GROUP BY 子句中
今天用SQL Server尝试实现一个SQL语句的时候,报了如标题所示的错误,通过在百度里面搜索,并亲自动手实现,终于发现问题所在,现在把它记录下来. 语句如下: select [OrderID],[ ...
- 选择列表中的列'sc.cno'无效,因为该列没有包含在聚合函数或者group by 字句中《SQL中的group by该怎么用?》
1.SQL Server中,子查询不能返回多个值 2.子查询中不能包含ORDER BY子句 3.group by 可以将查询结果按某一列或多列的值进行分组.group by 一般是和聚合函数一起搭配使 ...
- max等聚合函数和group by搭配使用的注意事项
1 group by的特点 1.1 定义 group_by的意思是根据by对数据按照哪个字段进行分组,或者是哪几个字段进行分组. 如果不在group by 后的分组中使用聚合函数,一般只会返回各个分组 ...
- MySQL——聚合函数和group by分组的使用
文章目录 MySQL--聚合函数和group by分组的使用 1.聚合函数介绍 2.GROUP BY 分组 3.常见的聚合函数 4.SQL执行顺序 MySQL--聚合函数和group by分组的使用 ...
最新文章
- Chapter 3 Phenomenon——24
- linux服务器下降,linux - 远程升级Ubuntu:如何最大程度地降低丢失服务器的风险? - Ubuntu问答...
- h5分线程Worker
- (苹果Mac OSX系统)绿联USB无法连接网络解决方案
- 知识图谱和行业领域的结合产物-KGB知识图谱介绍
- 逸仙电商将携Galenic法国科兰黎、EVE LOM参展进博会 | 进博会倒计时
- 红帽linux5.4安装教程,红帽企业Linux5.4下ORACLE安装步骤(推荐).pdf
- 类似零基础学python的小说_就像看小说一样,让你一个小时学会Python零基础「强烈推荐」...
- 香橙派装ubuntu系统
- 论机器学习中数据的重要性
- 米签---个人中心页面功能(uniapp)
- [转载] 怎样应对一般的面试---Star 法则 - towerman
- (C语言)判断表达式中括号是否匹配考生管理系统(链表)-洋葱先生-杨少通
- 数据库系统工程师备考心得——30天一次拿下
- CentOS SVN使用
- 蚂蚁上市:P7可获1200万元期权,酸酸酸酸酸...
- Python模块subprocess小记
- Windows11 拒绝访问压缩(zipped)文件夹
- 使用TP5将数据生成为PDF文件
- shell mysql awk_今日推荐:shell 三剑客之文本处理工具awk
热门文章
- neo4j查询多跳关系的方法
- glue与clue的意思
- 修补分支提交注意事项
- c primer plus第六版电子版_【财经】京东超市PLUS有机联盟:有机品牌提升一站式营销解决方案...
- oracle中rac是什么意思,Oracle中HA、RAC、Datagurad区别
- MapReduce Java API-多输入路径方式
- Java中怎样根据对象list的某对象的属性进行分组
- Express的基本路由实现对get和post等的请求和响应
- Dubbo搭建HelloWorld-搭建服务提供者与服务消费者并完成远程调用(附代码下载)
- Shiro中进行角色与权限认证流程