zoukankan      html  css  js  c++  java
  • 聚合操作及聚合管道

    聚合操作

    对文档的筛选结果进程整理统计

    db.collection.aggregate()
      功能:完成聚合操作
      参数:聚合条件 ----> 聚合操作符

    聚合操作符
    $group   分组聚合    需要配合具体的分组选项

      $sum 求和
        db.class1.aggregate({$group:{_id:'$gender', num:{$sum:1}}})
                  分组   按照gender值统计    统计结果,求和每有一个加1
        统计所有男生和女生的年龄之和
         db.class1.aggregate({$group:{_id:'$gender',num:{$sum:'$age'}}})

      $avg 平均值
        求男生 女生年龄的平均数
         db.class1.aggregate({$group:{_id:'$gender',num:{$avg:'$age'}}})

      $max 求最大值
        求男生女生的年龄最大值
         db.class1.aggregate({$group:{_id:'$gender',num:{$max:'$age'}}})

      $min 求最小值
        求男生女生的年龄最小值
         db.class1.aggregate({$group:{_id:'$gender',num:{$min:'$age'}}})

    $project 修改文档的显示效果
      $project值的用法同find()的field参数相同
       db.class1.aggregate({$project:{_id:0,name:1,age:1}})
      自定义显示的域名,但只是显示而已,真实的却没有改变。
       db.class1.aggregate({$project:{_id:0,Name:'$name',Age:'$age'}})

    $match 过滤想要的数据
      过滤年龄大于30的数据,$match值的写法同query
       db.class1.aggregate({$match:{age:{$gt:30}}})

    $limit 显示前n个文档
      db.class1.aggregate({$limit:n})

    $skip 跳过n条文档显示
      db.class1.aggregate({$skip:n})

    $sort 排序
      按照年龄排序
       db.class1.aggregate({$sort:{age:1}})

    聚合管道

    定义:将前一个聚合操作产生的结果,交给后一个聚合操作继续使用

    语法:db.collection.aggregate([{聚合1},{聚合2},{}...])

    例子:

      db.class1.aggregate([{$match:{gender:'m'}},{$sort:{age:1}},{$project:{_id:0}}])
      选出所有的男生,在按年龄升序排序,且不显示_id

  • 相关阅读:
    Java 借助poi操作PDF工具类
    【ES】Java High Level REST Client 使用示例(增加修改)
    数据库表结构查询SQL
    MySQL windows中的存储备份
    jenkins + Ansible Plugin + ansi-color 让结果显示颜色
    jenkins 构建历史 显示版本号
    python 2.7.11 环境安装
    ansible 安装和使用
    豌豆夹Redis解决方案Codis安装使用
    Spark on Mesos部署
  • 原文地址:https://www.cnblogs.com/zengsf/p/9682894.html
Copyright © 2011-2022 走看看