(14)mongodb aggregate聚集框架

与group相比,aggregate内置了很多方法,常用的如下:

  $match  相当于关系型数据库中的where
  $group   相当于关系型数据库中的group by
  $project   相当于关系型数据库中的select
  $sort  相当于关系型数据库中的order by
  $limit  相当于关系型数据库中的limit
  $sum  相当于关系型数据库中的sum
  $sum  相当于关系型数据库中的count

db.collection.aggregate(document)  这是用法,document是一个json数组,废话不多说了 ,直接上案例,数据用上一篇随笔中的数据。

1、查询goods下有多少条商品

  [

    {$group:{_id:null,total:{$sum:1}}}

  ]

  id为null,实际是不分组的,_id也可以随便写一个常量,比如这样写:[{$group:{_id:‘cat_id‘,total:{$sum:1}}}]

2、查询每个栏目下的商品数量

  [

    {$group:{_id:‘$cat_id‘,total:{$sum:1}}}

  ]  

  对cat_id分组,total名字任意,$sum:1,对1求和,实际是统计的行数

3、查询每个栏目下价格大于50元的商品个数

  [
    {$match:{shop_price:{$gt:50}}},
    {$group:{_id:‘$cat_id‘,total:{$sum:1}}}
  ]

4、查询每个栏目下价格大于50元的商品个数、并筛选出“满足条件的商品个数”大于等于3的栏目

  [
    {$match:{shop_price:{$gt:50}}},
    {$group:{_id:‘$cat_id‘,total:{$sum:1}}},
    {$match:{total:{$gte:3}}}
  ]

5、查询每个栏目下的库存量

  [

    {$group:{_id:‘$cat_id‘,total:{$sum:‘$goods_number‘}}}
  ]

6、查询每个栏目下的库存量,并按照库存量排序

  [

    {$group:{_id:‘$cat_id‘,total:{$sum:‘$goods_number‘}}},
    {$sort:{total:1}}
  ]

7、查询每个栏目下的库存量,并按照库存量排序,取数量高的前3名

  [
    {$group:{_id:‘$cat_id‘,total:{$sum:‘$goods_number‘}}},
    {$sort:{total:-1}},
    {$limit:3}
  ]

8、查询每个栏目的商品平均价格,并案平均价格有高到低排序

  [
    {$group:{_id:‘$cat_id‘,avg:{$avg:‘$shop_price‘}}},
    {$sort:{avg:-1}}
  ]

查询后输出结果样式都一样,仅以(8)为例,如下:

{
    "result" : [
        {
            "_id" : 5,
            "avg" : 3700
        },
        {
            "_id" : 4,
            "avg" : 2297
        },
        {
            "_id" : 3,
            "avg" : 1746.0666666666666
        },
        {
            "_id" : 2,
            "avg" : 823.33
        },
        {
            "_id" : 8,
            "avg" : 75.33333333333333
        },
        {
            "_id" : 15,
            "avg" : 70
        },
        {
            "_id" : 14,
            "avg" : 54
        },
        {
            "_id" : 13,
            "avg" : 33.5
        },
        {
            "_id" : 11,
            "avg" : 31
        }
    ],
    "ok" : 1
}

输出结果为json,一个result,一个ok;result中json数组,存放结果,ok的值是1

原文地址:https://www.cnblogs.com/javasl/p/11331879.html

时间: 2024-10-15 10:43:56

(14)mongodb aggregate聚集框架的相关文章

MongoDB聚合运算之group和aggregate聚集框架简单聚合(10)

聚合运算之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

MongoDB 的聚集操作

聚合引言 聚集操作就是出来数据记录并返回计算结果的操作.MongoDB提供了丰富的聚集操作,能够检测和执行数据集上的计算.运行在mongod上的数据聚集简化了代码和资源限制. 像查询一样,在Mongo的聚合操作使用collections作为输入,并返回一个或多个document作为输出. 聚合模式 聚合管道 MongoDB2.2引入了一个新的聚合框架:聚合管道,这是基于数据处理管道概念的模型.文档输入一个多阶段的管道并将文档转化为一个聚合的结果. 最基本的管道阶段提供了过滤器(Filters)来

MongoDB aggregate 运用篇 个人总结

最近一直在用mongodb,有时候会需要用到统计,在网上查了一些资料,最适合用的就是用aggregate,以下介绍一下自己运用的心得.. 别人写过的我就不过多描述了,大家一搜能搜索到N多一样的,我写一下我的总结. 基础知识 请大家自行查找更多,以下是关键文档. 操作符介绍: $project:包含.排除.重命名和显示字段 $match:查询,需要同find()一样的参数 $limit:限制结果数量 $skip:忽略结果的数量 $sort:按照给定的字段排序结果 $group:按照给定表达式组合结

MongoDB Aggregate Methods(2) MonoDB 的 3 种聚合函数

aggregate(pipeline,options) 指定 group 的 keys, 通过操作符 $push/$addToSet/$sum 等实现简单的 reduce, 不支持函数/自定义变量 group({ key, reduce, initial [, keyf] [, cond] [, finalize] }) 支持函数(keyf) mapReduce 的阉割版本 mapReduce 终极大杀器 count(query) too young too simple distinct(fi

【MongoDB学习笔记30】MongoDB的聚合框架

使用聚合框架可以对集合中的文档进行变换和组合.用多个构件创建一个管道(pipeline),用于对一连串的文档进行处理.这些构件包括: 筛选(filtering) 投射(projecting) 分组(grouping) 排序(sorting) 限制(limiting) 跳过(skipping) 在MongoDB中实际的集合框架,需要将这些操作传给aggregate函数,例如: (1)将文档的name字段投射出来 > db.post.aggregate({$project:{"name&quo

mongodb aggregate and mapReduce

Aggregate MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果.有点类似sql语句中的 count(*) 语法如下: db.collection.aggregate() db.collection.aggregate(pipeline,options) db.runCommand({ aggregate: "<collection>", pipeline: [ <stage>, <...&g

【MongoDB】MongoDB之聚合框架(一)

题记: 还有3天2014年结束了,这个月的计划除了总结Mongodb外其他计划都已经完成了.最近由于懒惰对于mongodb的研究暂停了好长时间.在最后的三天里,对于mongodb的研究做以总结和梳理: 一.基本概念 对于聚合框架,我在官方文档(http://docs.mongodb.org/manual/core/aggregation-introduction/)找到对它的介绍.翻译大概意思如下: 聚合是处理数据记录并且返回计算结果的操作.mongodb提供了一组强大针对数据集合进行检查和计算

MongoDB aggregate聚合

aggregate相当于 相当于mysql中的group以及一系列的操作 官网介绍地址:http://docs.mongodb.org/manual/reference/sql-aggregation-comparison/ 表达式 描述 实例 $sum 总结从集合中的所有文件所定义的值. db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}]) $av

Morphia - mongodb之ORM框架

一.简介 二.注解 1.@Entity 2.@Id3.@Indexed4.@Embedded5.@Transient和@Property6.@Reference 三.示例 四.参考资料 Morphia 注解详解 使用Morphia框架操作mongodb 使用 Morphia 和 MongoDB 实现持久化