1、数据准备

[{"goods_id":1,"cat_id":4,"goods_name":"KD876","goods_number":1,"click_count":7,"shop_price":1388.00,"add_time":1240902890},{"goods_id":4,"cat_id":8,"goods_name":"\u8bfa\u57fa\u4e9aN85\u539f\u88c5\u5145\u7535\u5668","goods_number":17,"click_count":0,"shop_price":58.00,"add_time":1241422402},{"goods_id":3,"cat_id":8,"goods_name":"\u8bfa\u57fa\u4e9a\u539f\u88c55800\u8033\u673a","goods_number":24,"click_count":3,"shop_price":68.00,"add_time":1241422082},{"goods_id":5,"cat_id":11,"goods_name":"\u7d22\u7231\u539f\u88c5M2\u5361\u8bfb\u5361\u5668","goods_number":8,"click_count":3,"shop_price":20.00,"add_time":1241422518},{"goods_id":6,"cat_id":11,"goods_name":"\u80dc\u521bKINGMAX\u5185\u5b58\u5361","goods_number":15,"click_count":0,"shop_price":42.00,"add_time":1241422573},{"goods_id":7,"cat_id":8,"goods_name":"\u8bfa\u57fa\u4e9aN85\u539f\u88c5\u7acb\u4f53\u58f0\u8033\u673aHS-82","goods_number":20,"click_count":0,"shop_price":100.00,"add_time":1241422785},{"goods_id":8,"cat_id":3,"goods_name":"\u98de\u5229\u6d669@9v","goods_number":1,"click_count":9,"shop_price":399.00,"add_time":1241425512},{"goods_id":9,"cat_id":3,"goods_name":"\u8bfa\u57fa\u4e9aE66","goods_number":4,"click_count":20,"shop_price":2298.00,"add_time":1241511871},{"goods_id":10,"cat_id":3,"goods_name":"\u7d22\u7231C702c","goods_number":7,"click_count":11,"shop_price":1328.00,"add_time":1241965622},{"goods_id":11,"cat_id":3,"goods_name":"\u7d22\u7231C702c","goods_number":1,"click_count":0,"shop_price":1300.00,"add_time":1241966951},{"goods_id":12,"cat_id":3,"goods_name":"\u6469\u6258\u7f57\u62c9A810","goods_number":8,"click_count":13,"shop_price":983.00,"add_time":1245297652}][{"goods_id":13,"cat_id":3,"goods_name":"\u8bfa\u57fa\u4e9a5320 XpressMusic","goods_number":8,"click_count":13,"shop_price":1311.00,"add_time":1241967762},{"goods_id":14,"cat_id":4,"goods_name":"\u8bfa\u57fa\u4e9a5800XM","goods_number":1,"click_count":6,"shop_price":2625.00,"add_time":1241968492},{"goods_id":15,"cat_id":3,"goods_name":"\u6469\u6258\u7f57\u62c9A810","goods_number":3,"click_count":8,"shop_price":788.00,"add_time":1241968703},{"goods_id":16,"cat_id":2,"goods_name":"\u6052\u57fa\u4f1f\u4e1aG101","goods_number":0,"click_count":3,"shop_price":823.33,"add_time":1241968949},{"goods_id":17,"cat_id":3,"goods_name":"\u590f\u65b0N7","goods_number":1,"click_count":2,"shop_price":2300.00,"add_time":1241969394},{"goods_id":18,"cat_id":4,"goods_name":"\u590f\u65b0T5","goods_number":1,"click_count":0,"shop_price":2878.00,"add_time":1241969533},{"goods_id":19,"cat_id":3,"goods_name":"\u4e09\u661fSGH-F258","goods_number":12,"click_count":7,"shop_price":858.00,"add_time":1241970139},{"goods_id":20,"cat_id":3,"goods_name":"\u4e09\u661fBC01","goods_number":12,"click_count":14,"shop_price":280.00,"add_time":1241970417},{"goods_id":21,"cat_id":3,"goods_name":"\u91d1\u7acb A30","goods_number":40,"click_count":4,"shop_price":2000.00,"add_time":1241970634},{"goods_id":22,"cat_id":3,"goods_name":"\u591a\u666e\u8fbeTouch HD","goods_number":1,"click_count":15,"shop_price":5999.00,"add_time":1241971076}][{"goods_id":23,"cat_id":5,"goods_name":"\u8bfa\u57fa\u4e9aN96","goods_number":8,"click_count":17,"shop_price":3700.00,"add_time":1241971488},{"goods_id":24,"cat_id":3,"goods_name":"P806","goods_number":100,"click_count":35,"shop_price":2000.00,"add_time":1241971981},{"goods_id":25,"cat_id":13,"goods_name":"\u5c0f\u7075\u901a\/\u56fa\u8bdd50\u5143\u5145\u503c\u5361","goods_number":2,"click_count":0,"shop_price":48.00,"add_time":1241972709},{"goods_id":26,"cat_id":13,"goods_name":"\u5c0f\u7075\u901a\/\u56fa\u8bdd20\u5143\u5145\u503c\u5361","goods_number":2,"click_count":0,"shop_price":19.00,"add_time":1241972789},{"goods_id":27,"cat_id":15,"goods_name":"\u8054\u901a100\u5143\u5145\u503c\u5361","goods_number":2,"click_count":0,"shop_price":95.00,"add_time":1241972894},{"goods_id":28,"cat_id":15,"goods_name":"\u8054\u901a50\u5143\u5145\u503c\u5361","goods_number":0,"click_count":0,"shop_price":45.00,"add_time":1241972976},{"goods_id":29,"cat_id":14,"goods_name":"\u79fb\u52a8100\u5143\u5145\u503c\u5361","goods_number":0,"click_count":0,"shop_price":90.00,"add_time":1241973022},{"goods_id":30,"cat_id":14,"goods_name":"\u79fb\u52a820\u5143\u5145\u503c\u5361","goods_number":9,"click_count":1,"shop_price":18.00,"add_time":1241973114},{"goods_id":31,"cat_id":3,"goods_name":"\u6469\u6258\u7f57\u62c9E8 ","goods_number":1,"click_count":5,"shop_price":1337.00,"add_time":1242110412},{"goods_id":32,"cat_id":3,"goods_name":"\u8bfa\u57fa\u4e9aN85","goods_number":4,"click_count":9,"shop_price":3010.00,"add_time":1242110760}]

2、group参数解析

官方给出参数结构:

  {
    group:
      {
        ns: <namespace>,
        key: <key>,
        $reduce: <reduce function>,
        $keyf: <key function>,
        cond: <query>,
        finalize: <finalize function>
      }
  }

重要参数解析:  key:作为分组的keyreduce:这些函数可以返回一个sum或count。该函数接受两个参数(curr,result):curr(当前文档)和result(分组聚集的结果文档)。initial:初始化聚合结果文档变量,为空时自动为每列提供初始变量。keyf:可选。替代的key 字段。指定一个函数创建一个“key object”作为分组的key。使用keyf而是通过group by领域而不是现有的文档域键组。cond:过滤条件finalize:在db.collection.group()返回最终结果之前,此功能可以修改的结果文档或替换的结果文档作为一个整体。

3、执行顺序解析

1、key-->2、initial-->3、cond-->4、reduce   将本组信息存储,然后其他组循环2,3,4执行

4、执行案例

#key:表示分组的字段
#cond:分组后查询的条件
#reduce:聚合操作,其中curr表示当前文档的指针,result表示分组聚集的文档
#initial:参数初始化操作
#finalize:最终执行函数,类似java中的finally代码块#查询每个栏目下的商品数量
{
key:{cat_id:1},
cond:{},
reduce:function(curr,result) {result.cnt += 1;
},
initial:{cnt:0}
}#查询每个栏目下价格高于50元的商品数量
{
key:{cat_id:1},
cond:{shop_price:{$gt:50}},
reduce:function(curr,res){res.cnt +=1;
},
initial:{cnt:0}
}#每个栏目下的商品库存量 sum()操作
{
key:{cat_id:1},
cond:{},
reduce:function(curr,res){res.num +=curr.goods_number;
},
initial:{num:0}
}#查询每个栏目最贵的商品价格, max()操作
{
key:{cat_id:1},
cond:{},
reduce:function(curr,res){if(res.price<curr.shop_price){res.price = curr.shop_price;}
},
initial:{price:0}
}#查询每个栏目下商品的平均价格
{
key:{cat_id:1},
cond:{},
reduce:function(curr,res){res.cnt +=1;res.sum += curr.shop_price;},
initial:{sum:0,cnt:0},
finalize:function(res){res.avg = res.sum/res.cnt;
}
}

  

欢迎留言,一起学习、进步。

转载于:https://www.cnblogs.com/ywjfx/p/10222933.html

mongdb group聚合操作相关推荐

  1. Spring Boot 整合——MongoDB整合3(MongoDB聚合操作)

    文章前面 关于版本 依赖 版本 springboot 2.0.8.RELEASE mongodb 4.0.14 本内容只是为了介绍mongodb最基础的使用以及配置,作为一个知名的数据库,其存在相当多 ...

  2. elasticsearch聚合操作——本质就是针对搜索后的结果使用桶bucket(允许嵌套)进行group by,统计下分组结果,包括min/max/avg...

    分析 最后,我们还有一个需求需要完成:允许管理者在职员目录中进行一些分析. Elasticsearch有一个功能叫做聚合(aggregations),它允许你在数据上生成复杂的分析统计.它很像SQL中 ...

  3. mongodb聚合操作之group

    group介绍 mongodb中提供了一个很实用的聚合函数group,这个有点类似于mysql的group by 的功能,但又不是mysql中group by 的功能,它更多是用来做数据的聚合操作使用 ...

  4. 硬货来了!轻松掌握 MongDB 流式聚合操作

    点击上方"肉眼品世界", 右上角选择"设为星标" 专注个人深度价值成长 " 阅读本文大概需要 15 分钟. " 信息科学中的聚合是指对相关数 ...

  5. php数据group去重,MongoDB_Mongodb聚合函数count、distinct、group如何实现数据聚合操作, 上篇文章给大家介绍了Mong - phpStudy...

    Mongodb聚合函数count.distinct.group如何实现数据聚合操作 上篇文章给大家介绍了Mongodb中MapReduce实现数据聚合方法详解,我们提到过Mongodb中进行数据聚合操 ...

  6. es对分组后结果进行统计_elasticsearch聚合操作——本质就是针对搜索后的结果使用桶bucket(允许嵌套)进行group by,统计下分组结果,包括min/max/avg...

    分析 最后,我们还有一个需求需要完成:允许管理者在职员目录中进行一些分析. Elasticsearch有一个功能叫做聚合(aggregations),它允许你在数据上生成复杂的分析统计.它很像SQL中 ...

  7. 二、mongodb数据库系列——聚合操作 索引操作 权限管理

    一.mongodb的聚合操作 学习目标 了解 mongodb的聚合原理 掌握 mongdb的管道命令 掌握 mongdb的表达式 1 mongodb的聚合是什么 聚合(aggregate)是基于数据处 ...

  8. mongodb的聚合操作

    mongodb的聚合操作 1 mongodb的聚合是什么 聚合(aggregate)是基于数据处理的聚合管道,每个文档通过一个由多个阶段(stage)组成的管道,可以对每个阶段的管道进行分组.过滤等功 ...

  9. MongoDB 聚合操作

    MongoDB 聚合操作 在MongoDB中,有两种方式计算聚合:Pipeline 和 MapReduce.Pipeline查询速度快于MapReduce,但是MapReduce的强大之处在于能够在多 ...

最新文章

  1. ACMNO.20 C语言-插入队列 已有一个已排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。 输入 第一行,原始数列。 第二行,需要插入的数字。
  2. 常见apk安装失败的错误及原因
  3. db first和code first
  4. ubuntu mysql 初始化_Ubuntu初始化MySQL碰到的坑
  5. 锤子/诺基亚/努比亚手机不合格!上海市场监管局公布抽检不合格手机名单......
  6. 推荐一个业界最小的可自定义算法的加密芯片
  7. 计算机房管理制度通知,计算机房管理制度.doc
  8. 服务器管理系统架构,统一管理 统一IT管理系统架构设计思路与实践
  9. 全国各省电信、联通、网通、铁通DNS列表
  10. BitTorrent协议分析一
  11. B - Gary's Calculator
  12. 型のデザインのガイドライン
  13. 【OS】Linux环境下配置固定IP地址--静态IP地址(不能上外网问题)
  14. 一个游戏中玩家总经验值达到200就可以到达2级,达到400可以升到3级,达到600可升4级,达到800可升5级依此类推(玩家新创建的角色为0经验1级)。游戏中有一种超级经验丹,玩家1级的时候使用超级经
  15. ASLR(地址空间随机化)
  16. 如何创作一款商业级的安卓独立应用
  17. POJ1753 flip Game翻转棋盘
  18. VirtualBox 里安装win7 / win8 不能全屏的解决方法
  19. 帆软finereport问题分享
  20. IE浏览器和360无法预览pdf的问题

热门文章

  1. 如何把数据库从sql变成mysql_如何将数据库从SQL Server迁移到MySQL
  2. php mysql group by_php – 如何在mysql查询中解决“不在GROUP BY中”错误
  3. arm ubuntu 编译boost_使用yocto工具编译qt5.9.6总结
  4. 消息已读未读的模型设计_阿里云技术专家分享:现代 IM 系统中消息推送和存储架构的实现...
  5. 计算机硬件知识教学的信息化手段,《计算机硬件组成》教学设计
  6. sklearn朴素贝叶斯分类器_python机器学习:方法链和朴素贝叶斯分类器
  7. 计算机中的字,双字以及存储
  8. HTML+CSS+JS实现 ❤️echarts省市区地图城市选择❤️
  9. 《零基础》MySQL删除数据表(十)
  10. 计算机命令秒退,Win10专业版下ping命令闪退自动关闭的解决办法