zoukankan      html  css  js  c++  java
  • MongoDB 学习笔记之 group聚合

    group聚合:

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

    用group求每组count:

    db.fruit.group({key:{"name": 1},  cond:{"fruitid": {$lt: 10}},  reduce: function(curr, result){  result.cnt += 1;  },  initial: {cnt: 1}})

    用group求每组sum:

    db.fruit.group({key:{"name": 1},  cond:{"fruitid": {$lt: 10}},  reduce: function(curr, result){  result.cnt += curr.weight;  },  initial: {cnt: 0}})

    用group求每组最大最小值max/min:

    db.fruit.group({key:{"name": 1},  cond:{"fruitid": {$lt: 10}},  reduce: function(curr, result){  if(curr.weight> result.cnt) result.cnt = curr.weight;  },  initial: {cnt: 0}}) 

    用group求每组平均值avg:

    db.fruit.group({key:{"name": 1},  cond:{},  reduce: function(curr, result){  result.cnt += 1; result.sum += curr.weight },  initial: {cnt: 0, sum: 0}, finalize: function(result) { result.avg = result.sum / result.cnt; }})

    注意:

    Group不支持shard cluster, 无法分布式运算

    分布式要使用aggregate(), mapReduce()

  • 相关阅读:
    可以多个广告浮动的页面
    获取内容并截取长度用...替换
    用UIManager使Swing界面转换风格。
    Java FileInputStream
    win7 部署tomcat总结
    观察者模式
    Java RandomAccessFile
    Java 客户端界面功能:停止当前操作
    多线程的开启与管理
    log4j内容记录
  • 原文地址:https://www.cnblogs.com/AK47Sonic/p/7401117.html
Copyright © 2011-2022 走看看