mongdb group聚合操作

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/569975.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP连接MySQL数据库的几种方法

1.最简单的方式-mysql&#xff08;面向过程&#xff09; <?php $con mysql_connect("localhost","root","password"); $select_db mysql_select_db(test); if (!$select_db) {die("could not connect to the db:\n" . mysql_e…

jQuery 教程01——jQuery安装

1、简介 jQuery是一个轻量级的”写的少&#xff0c;做的多”的JavaScript库。 jQuery 极大地简化了 JavaScript 编程。 jQuery 很容易学习。 jQuery库包含以下功能&#xff1a; HTML 元素选取 HTML 元素操作 CSS 操作 HTML 事件函数 JavaScript 特效和动画 HTML DOM 遍历和…

第一个程序 快速编译链接的办法

转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/10223249.html

变量 和 注释

转自&#xff1a;白月黑羽Python3教程&#xff1a;http://www.python3.vip/doc/tutorial/python/0003/ Python语言中&#xff0c;所有的 数据 都被称之为 对象。 每个整数、小数、字符串&#xff0c;还有我们后面要学的 字典、元组、列表 等&#xff0c; 都是对象。 在Python程…

jQuery 教程02-jQuery 语法

通过 jQuery&#xff0c;您可以选取&#xff08;查询&#xff0c;query&#xff09; HTML 元素&#xff0c;并对它们执行”操作”&#xff08;actions&#xff09;。 jQuery 语法 jQuery 语法是通过选取 HTML 元素&#xff0c;并对选取的元素执行某些操作。 基础语法&#x…

jQuery教程03-jQuery 元素、id、.class和*全选择器

jQuery 基础选择器 jQuery 选择器允许您对 HTML 元素组或单个元素进行操作。 jQuery 选择器基于元素的 id、类、类型、属性、属性值等"查找"&#xff08;或选择&#xff09;HTML 元素。 它基于已经存在的 CSS 选择器&#xff0c;除此之外&#xff0c;它还有一些自定…

前台一键备份数据库+PHP实现方式

一、实现思路 1、单击备份按钮传递参数到后台&#xff0c;ajax实现&#xff1a; function backupDatabase(){var back backupDatabase;$.ajax({url:system_backup.php?dobackupDatabase,type:POST,data:back,dataType:json,beforeSend:function(){intervalwindow.setInterv…

网络操作系统 第四章 磁盘管理

习题 1.磁盘的数据结构包括哪些内容? 1)主引导扇区 2)操作系统引导扇区 3)文件分配表 4)目录区 5)数据区 2.什么是基本磁盘和动态磁盘? 1&#xff09;基本磁盘: 基本磁盘和旧版本Windows操作系统中使用了相同的磁盘结构。在使用基本磁盘时&#xff0c;我们被限制只能在每个磁…

jQuery教程04-jQuery_this选择器

jQuery选择器之特殊选择器this 相信很多刚接触jQuery的人&#xff0c;很多都会对$(this)和this的区别模糊不清&#xff0c;那么这两者有什么区别呢&#xff1f; 1、JS中的this this是JavaScript中的关键字&#xff0c;指的是当前的上下文对象&#xff0c;简单的说就是方法/属…

网络操作系统 第七章 管理TCP/IP网络

习题 1.简述TCP /IP 通信协议的四层结构的内容及应用。 应用层&#xff1a;应用程序间沟通的层&#xff0c;如简单电子邮件传输协议(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。 传输层&#xff1a;在此层中&#xff0c;它提供了节点间的数据传送服务&#xff0c;…

windows+PHP+shell_exec()无法执行的原因

今天使用shell_exec()命令执行wkhtmltopdf.exe 生成pdf文件时&#xff0c;总是无法生成PDF文件&#xff0c;使用var_dump()打印返回值&#xff0c;结果是null。可是检查代码并没有什么问题啊&#xff1f;执行程序的目录是 D:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe …

通过wkhtmltopdf导出支持CSS样式的pdf文件

在公司项目中发现有下载pdf文件的功能&#xff0c;但是不能识别CSS样式&#xff0c;导致下载的pdf文件格式显得很别扭&#xff0c;虽然能看但是难看。然后就是百度啊&#xff0c;google啊&#xff0c;最后找到一款能够识别CSS样式的软件—wkhtmltopdf。wkhtmltopdf可以直接把任…

【算法基础笔记】常用的排序算法的时间、空间复杂度,部分排序算法原理

冒泡排序 比较相邻的元素。如果第一个比第二个大&#xff0c;就交换他们两个。对每一对相邻元素做同样的工作&#xff0c;从开始第一对到结尾的最后一对。在这一点&#xff0c;最后的元素应该会是最大的数。针对所有的元素重复以上的步骤&#xff0c;除了最后一个。持续每次对越…

windows定时任务

在windows系统中创建定时任务&#xff0c;与在linux中创建定时任务是不同的。因为平时会用到windows的定时任务&#xff0c;所以在这里做个记录&#xff0c;同事给小伙伴们一个参考。 一、windows定时任务的工作流程 1、首先创建一个批处理脚本&#xff0c;就是扩展名为bat的…

jQuery实现checkbox的全选反选方法

checkbox的全选、取消全选、选中所有奇数、选中所有偶数等方法的实现代码如下&#xff1a; 注意jQuery的版本&#xff1a;jQuery1.6增加了prop&#xff0c;1.6之前的还是使用attr()和removeAttr() <!DOCTYPE html> <html lang"en"> <head> <ti…

爬虫前期知识的储备(二)

通用爬虫与聚焦爬虫&#xff1a; 通用爬虫&#xff1a;搜索引擎用的爬虫系统1&#xff09;目标&#xff1a;把互联网的网页下载下来&#xff0c;放到本地服务器形成备份&#xff0c;再对这些网页做相关处理&#xff08;提取关键字&#xff0c;去掉广告&#xff09;&#xff0c;…

jQuery教程05-层级选择器

jQuery选择器之层级选择器 文档中的所有的节点之间都是有这样或者那样的关系。我们可以把节点之间的关系可以用传统的家族关系来描述&#xff0c;可以把文档树当作一个家谱&#xff0c;那么节点与节点直接就会存在父子&#xff0c;兄弟&#xff0c;祖孙的关系了。 选择器中的…

WebSocket使用中Stomp Client连接报ERROR CODE 200的解决办法

最近在做一个WebSocket项目&#xff0c;后台使用了Stomp协议的WebSocketConfigurer&#xff0c;但是前端在测试的时候&#xff0c;发现一个很奇怪的问题&#xff1a; 本地的测试代码&#xff0c;最初我使用了JavaSockJS实现&#xff1a; Configuration EnableWebSocketMessageB…

jQuery教程06-基本筛选选择器

jQuery选择器之基本筛选选择器 很多时候我们不能直接通过基本选择器与层级选择器找到我们想要的元素&#xff0c;为此jQuery提供了一系列的筛选选择器用来更快捷的找到所需的DOM元素。筛选选择器很多都不是CSS的规范&#xff0c;而是jQuery自己为了开发者的便利延展出来的选择…

jQuery教程07-内容筛选选择器

jQuery选择器之内容筛选选择器 基本筛选选择器针对的都是元素DOM节点&#xff0c;如果我们要通过内容来过滤&#xff0c;jQuery也提供了一组内容筛选选择器&#xff0c;当然其规则也会体现在它所包含的子元素或者文本内容上 内容过滤器描述如下表&#xff1a; 注意事项&…