聚合运算之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)相关推荐

  1. 时序数据库如何支持秒级上亿数据的查询分组和聚合运算

    https://mp.weixin.qq.com/s?__biz=MzA5NzkxMzg1Nw==&mid=2653162499&idx=1& sn=ca43c74ef541b ...

  2. R语言按组聚合求和实战(sum a variable by group):使用aggregate函数按组聚合求和、使用tapply函数按组聚合求和、按组聚合求和(使用dplyr包)

    R语言按组聚合求和实战(sum a variable by group):使用aggregate函数按组聚合求和.使用tapply函数按组聚合求和.按组聚合求和(使用dplyr包) 目录

  3. C# 中奇妙的函数–6. 五个序列聚合运算(Sum, Average, Min, Max,Aggregate)

    今天,我们将着眼于五个用于序列的聚合运算.很多时候当我们在对序列进行操作时,我们想要做基于这些序列执行某种汇总然后,计算结果. Enumerable 静态类的LINQ扩展方法可以做到这一点 .就像之前 ...

  4. 选择列表中的列 '.......' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。

    错误:消息 8120,级别 16,状态 1,第 51 行 选择列表中的列 'Employee.EmployeeID' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中. 题目:查询最低收入 ...

  5. 简化 MongoDB 关联运算

    [摘要] MongoDB提供的 lookup 对多表关联实现了基本的支持,但面对一些比较复杂的关联情况,往往会遇到 shell 脚本过于复杂的问题.而集算器 SPL 语言,则因其离散性.易用性恰好能弥 ...

  6. 选择列表中的列……无效,因为该列没有包含在聚合函数或 GROUP BY 子句中

    今天用SQL Server尝试实现一个SQL语句的时候,报了如标题所示的错误,通过在百度里面搜索,并亲自动手实现,终于发现问题所在,现在把它记录下来. 语句如下: select [OrderID],[ ...

  7. 选择列表中的列'sc.cno'无效,因为该列没有包含在聚合函数或者group by 字句中《SQL中的group by该怎么用?》

    1.SQL Server中,子查询不能返回多个值 2.子查询中不能包含ORDER BY子句 3.group by 可以将查询结果按某一列或多列的值进行分组.group by 一般是和聚合函数一起搭配使 ...

  8. max等聚合函数和group by搭配使用的注意事项

    1 group by的特点 1.1 定义 group_by的意思是根据by对数据按照哪个字段进行分组,或者是哪几个字段进行分组. 如果不在group by 后的分组中使用聚合函数,一般只会返回各个分组 ...

  9. MySQL——聚合函数和group by分组的使用

    文章目录 MySQL--聚合函数和group by分组的使用 1.聚合函数介绍 2.GROUP BY 分组 3.常见的聚合函数 4.SQL执行顺序 MySQL--聚合函数和group by分组的使用 ...

最新文章

  1. Chapter 3 Phenomenon——24
  2. linux服务器下降,linux - 远程升级Ubuntu:如何最大程度地降低丢失服务器的风险? - Ubuntu问答...
  3. h5分线程Worker
  4. (苹果Mac OSX系统)绿联USB无法连接网络解决方案
  5. 知识图谱和行业领域的结合产物-KGB知识图谱介绍
  6. 逸仙电商将携Galenic法国科兰黎、EVE LOM参展进博会 | 进博会倒计时
  7. 红帽linux5.4安装教程,红帽企业Linux5.4下ORACLE安装步骤(推荐).pdf
  8. 类似零基础学python的小说_就像看小说一样,让你一个小时学会Python零基础「强烈推荐」...
  9. 香橙派装ubuntu系统
  10. 论机器学习中数据的重要性
  11. 米签---个人中心页面功能(uniapp)
  12. [转载] 怎样应对一般的面试---Star 法则 - towerman
  13. (C语言)判断表达式中括号是否匹配考生管理系统(链表)-洋葱先生-杨少通
  14. 数据库系统工程师备考心得——30天一次拿下
  15. CentOS SVN使用
  16. 蚂蚁上市:P7可获1200万元期权,酸酸酸酸酸...
  17. Python模块subprocess小记
  18. Windows11 拒绝访问压缩(zipped)文件夹
  19. 使用TP5将数据生成为PDF文件
  20. shell mysql awk_今日推荐:shell 三剑客之文本处理工具awk

热门文章

  1. neo4j查询多跳关系的方法
  2. glue与clue的意思
  3. 修补分支提交注意事项
  4. c primer plus第六版电子版_【财经】京东超市PLUS有机联盟:有机品牌提升一站式营销解决方案...
  5. oracle中rac是什么意思,Oracle中HA、RAC、Datagurad区别
  6. MapReduce Java API-多输入路径方式
  7. Java中怎样根据对象list的某对象的属性进行分组
  8. Express的基本路由实现对get和post等的请求和响应
  9. Dubbo搭建HelloWorld-搭建服务提供者与服务消费者并完成远程调用(附代码下载)
  10. Shiro中进行角色与权限认证流程