聚集运算之group
来源:互联网 发布:redis同步mysql 编辑:程序博客网 时间:2024/06/06 19:09
语法:
db.collection.group(document)
{
key:{key1:1,key2:1},
cond:{},
reduce: function(curr,result) {
},
initial:{},
finalize:function() {
}
}
解析:
key: 分组字段
cond:查询条件
reduce:聚合函数 (curr:分组数据的每一行的游标,result:存储每行分组的结果)
initial:初始化
finalize:统计完一组后的回调函数
计算每个栏目下的商品数 count()操作
select count(*) from goods group by cat_id;
{
key:{cat_id:1},
cond:{},
reduce: function(curr,result) {
result.total += 1;
},
initial:{total:0}
}
计算大于50元的商品个数
{
key:{cat_id:1},
cond:{shop_price:{$gt:50}},
reduce: function(curr,result) {
result.total += 1;
},
initial:{total:0}
}
计算每个栏目下的商品库存量 (sum()操作)
select sum(goods_number) from goods group by cat_id;
{
key:{cat_id:1},
cond:{},
reduce: function(curr,result) {
result.total += curr.goods_number;
},
initial:{total:0}
}
计算每个栏目下最贵的商品价格 (max()操作)
select max(shop_price) from goods group by cat_id;
{
key:{cat_id:1},
cond:{},
reduce: function(curr,result) {
if(result.max<curr.shop_price) {
result.max=curr.shop_price;
}
},
initial:{max:0},
}
计算每个栏目下商品的平均价格
{
key:{cat_id:1},
cond:{},
reduce: function(curr,result) {
result.cnt += 1;
result.sum += curr.shop_price;
},
initial:{total:0},
finalize:function(result) {
result.avg = result.sum/result.cnt;
}
}
group缺点:
1.group需要自己手写聚合函数的业务逻辑
2.group不支持shard cluster,无法分布式运算
- 聚集运算之group
- mongoDB高级篇①】聚集运算之group,aggregate
- 【mongoDB高级篇①】聚集运算之group,aggregate
- 【mongoDB高级篇①】聚集运算之group,aggregate
- 【mongoDB高级篇①】聚集运算之group与aggregate
- 关于group by 与 聚集函数
- 聚集、group by、having语句执行原理
- 【mongoDB高级篇②】大数据聚集运算之mapReduce(映射化简)
- BW之聚集简介
- resultMap之collection聚集
- resultMap之collection聚集
- SQL语言之聚集函数
- 地图渲染之Clusterer聚集
- mysql索引之聚集索引
- mysql索引之聚集索引
- SQL Server2008存储结构之聚集索引
- Java NIO 之分散与聚集
- MongoDB常用命令汇总之聚集集合查询。
- HDU 1846 Brave Game (巴什博弈)
- canvas 让你呼风唤雨,下雨下雪效果
- 从头认识多线程-2.23 静态内部类的同步机制跟普通类相同
- 快速幂
- addEventListener和removeEventListener
- 聚集运算之group
- 文本域与input窗口中 修改placeHolder 颜色
- 快速排序算法(排序详解)
- iOS蓝牙开发(一)蓝牙相关基础知识
- 快速排序
- sdut oj 2404 super prime(素数筛)
- JAVA 类 URL
- java中重载和重写
- AngularJS之表单验证