聚合运算之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. 【mongoDB高级篇①】聚集运算之group与aggregate

    group 语法   db.collection.group({ key:{field:1},//按什么字段进行分组 initial:{count:0},//进行分组前变量初始化,该处声明的变量可以在 ...

  2. 【mongoDB高级篇①】聚集运算之group,aggregate

    group 语法 db.collection.group({ key:{field:1},//按什么字段进行分组 initial:{count:0},//进行分组前变量初始化,该处声明的变量可以在以下 ...

  3. MongoDB学习笔记——聚合操作之group,distinct,count

    单独的聚合命令(group,distinct,count) 单独聚合命令 比aggregate性能低,比Map-reduce灵活度低:但是可以节省几行javascript代码,后面那句话我自己加的,哈 ...

  4. MongoDB 学习笔记之 group聚合

    group聚合: key: 分组字段 cond:过滤条件 reduce: curr是当前行 result是每组的结果集 initial : 组变量初始值 finalize: 统计一组后的回调函数 用g ...

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

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

  6. mongodb--group聚合运算

    mongodb本质就是要做一个高性能,能简单则简单,不要把mongodb中的运算做的太复杂 count 最简单的一个聚合方法 distinct 选择结果中剔除重复的一个键值, 跟sql语句的效果是一样 ...

  7. Dynamics 365 CE中使用FetchXML进行聚合运算

    微软动态CRM专家罗勇 ,回复328或者20190429可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! Dynamics 365 Customer Engagement ...

  8. 3:django models Making queries 高级进阶--聚合运算

    在前一遍文章django models Making queries里面我们提到了django常用的一些检索数据库的内容, 下面我们来看一下更为高级的检索聚合运算 这是我们要用到的模型 class A ...

  9. C#聚合运算方法

    Aggregate 对集合值执行自定义聚合运算 Average 计算集合平均值 Count 对集合的元素惊醒计数,还可以仅对满足某一谓词函数的元素进行计数 LongCount 对大型集合中的元素进行计 ...

随机推荐

  1. layer弹出框小结

    1.layer.open() // 1.打开弹出层 layer.open({ type:1, //基本层类型 icon:, //图标 content:'请核对信息!', //内容 shade:0.3, ...

  2. Mac安装mysql

    ### 第一步 安装后一定要记住初始密码 ### 第二步 打开终端 cd /usr/local/mysql/bin ./mysql -u root -p #输入初始密码 set password = ...

  3. AJAX应用小案例

    此案例在XAMPP本地服务器上运行,需要应用jquery3.1.1的版本,应用JSON传递数据 代码如下: html代码: <!DOCTYPE html><html lang=&qu ...

  4. win7系统的右键菜单只显示一个白色框不显示菜单项 解决办法

    如上图所示,桌面或其他大部分地方点击右键菜单,都只显示一个白色框,鼠标移上去才有菜单项看,并且效果很丑 解决办法: 计算机-右键-属性-高级-性能-设置-视觉效果-淡入淡出或滑动菜单到视图,将其前面的 ...

  5. svn提交时提示 Aborting commit: remains in conflict 解决办法

    出现在rename一个目录时,再提交时一直报错 Aborting commit: remains in conflict 使用右键菜单 svn - resolve 即可解决.用cleanup之类的都没 ...

  6. PowerShell Notes

    1.  概要 - PowerShell 是cmdlet(command-let)的指令集合,类似unix的bash. - IDE: Windows PowerShell ISE,不区分大小写,可以用命 ...

  7. C# 全角和半角转换以及判断的简单代码

    在C#中判断和转换全角半角的方法 1. 判断是否为全角半角 全角占用二个字节 半角占用一个字节 用string.length 和System.text.Encoding.Default.GetByte ...

  8. [.net core]简介(转)

    原文地址:https://docs.microsoft.com/zh-cn/dotnet/articles/core/ NET Core 是一个通用开发平台,由 Microsoft 和 GitHub  ...

  9. 360浏览器 默认IE7渲染的解决

    <meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1" /> http://st ...

  10. 转载:Centos7 从零编译配置Memcached

    序言 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度. Memca ...