`

MongoDB aggregate 聚合使用方式

 
阅读更多
  • 最近一直在用mongodb,有时候会需要用到统计,在网上查了一些资料,最适合用的就是用aggregate,以下介绍一下自己运用的心得。。

    别人写过的我就不过多描述了,大家一搜能搜索到N多一样的,我写一下我的总结。

    基础知识

    请大家自行查找更多,以下是关键文档。

    操作符介绍:

    $project:包含、排除、重命名和显示字段

    $match:查询,需要同find()一样的参数

    $limit:限制结果数量

    $skip:忽略结果的数量

    $sort:按照给定的字段排序结果

    $group:按照给定表达式组合结果

    $unwind:分割嵌入数组到自己顶层文件

    文档:MongoDB 官方aggregate说明。

    相关使用:

    db.collection.aggregate([array]);

    array可是是任何一个或多个操作符。

    group和match的用法,使用过sqlserver,group的用法很好理解,根据指定列进行分组统计,可以统计分组的数量,也能统计分组中的和或者平均值等。

    group之前的match,是对源数据进行查询,group之后的match是对group之后的数据进行筛选;

    同理,sort,skip,limit也是同样的原理;

    1.1 {_id:1,name:"a",status:1,num:1}
    2.2 {_id:2,name:"a",status:0,num:2}
    3.3 {_id:3,name:"b",status:1,num:3}
    4.4 {_id:4,name:"c",status:1,num:4}
    5.5 {_id:5,name:"d",status:1,num:5}

    以下是示例:

    应用一:统计name的数量和总数;

    db.collection.aggregate([

      {$group:{_id:"$name",count:{$sum:1},total:{$sum:"$num"}}

    ]);

    应用二:统计status=1的name的数量;

    db.collection.aggregate([

      {$match:{status:1}},

      {$group:{_id:"$name",count:{$sum:1}}}

    ]);

    应用三:统计name的数量,并且数量为小于2的;

    db.collection.aggregate([

      {$group:{_id:"$name",count:{$sum:1}},

      {$match:{count:{$lt:2}}}

    ]);

    应用四:统计stauts=1的name的数量,并且数量为1的;

    db.collection.aggregate([

      {$match:{status:1}},

      {$group:{_id:"$name",count:{$sum:1}}},

      {$match:{count:1}}

    ]);

    多列group,根据name和status进行多列

    db.collection.aggregate([

      {$group:{_id:{name:"$name",st:"$status"},count:{$sum:1}}}

    ]);

    $project该操作符很简单,

    db.collection.aggregate([

      {$project:{name:1,status:1}}

    ]);

    结果是,只有_id,name,status三个字段的表数据,相当于sql表达式 select _id,name,status from collection

    $unwind

    这个操作符可以将一个数组的文档拆分为多条文档,在特殊条件下有用,本人暂没有进行过多的研究。

    以上基本就可以实现大部分统计了,group前条件,group后条件,是重点。

分享到:
评论

相关推荐

    MongoDB 聚合管道(Aggregation Pipeline)

    MongoDB的聚合操作可以使用命令行、驱动程序或MongoDB Shell中的aggregate()函数来执行。在聚合函数中,可以链式调用多个阶段操作符,形成一个完整的聚合管道。 值得一提的是,张善友在其博客中对MongoDB聚合管道...

    MongoDB aggregate 运用篇个人总结

    最近一直在用mongodb,有时候会需要用到...MongoDB中聚合的方法使用aggregate()。 语法 aggregate() 方法的基本语法格式如下所示: db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION) 实例 集合中的数据如下: { _

    Mongodb聚合

    在 MongoDB 2.2 版本之后引入了聚合框架,这为开发者提供了更高效的数据处理方式。 #### 聚合管道(Pipeline)概念 聚合管道由多个阶段(stages)组成,每个阶段针对输入文档执行特定的操作,并将处理后的结果传递...

    使用aggregate在MongoDB中查询重复数据记录的方法

    在MongoDB中,`db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)`命令用于对特定集合执行一系列聚合管道操作。每个操作(pipe)通常接收上一步的输出作为输入,并产生新的输出,直到最后一个操作返回最终结果。 ...

    MongoDB 高级查询 aggregate 聚合管道

    db.COLLECTION_NAME.aggregate() 方法用来构建和使用聚合管道,下图是官网给的实例,可以看出来聚合管道的用法还是比较简单的。   2. MongoDB Aggregation 管道操作符与表达式 常用的管道操作符有以下这些: ...

    php代码-mongodb aggregate sample 的使用

    在PHP中,MongoDB是一个非常流行的NoSQL数据库系统,它提供了强大的聚合框架(aggregate)用于数据处理和分析。本文将详细介绍如何在PHP中使用MongoDB的aggregate功能,并通过`main.php`示例代码来演示其具体用法。 ...

    mongodb group aggregate项目实战笔记

    MongoDB 中的 `aggregate` 方法是一种用于处理数据(聚合数据)的方法,它可以进行复杂的汇总操作。`group` 是 `aggregate` 方法中的一个阶段,它可以根据指定的字段对文档进行分组,并且可以计算每个分组的统计信息...

    MongoDB的高级查询aggregate聚合管道1

    在MongoDB中,聚合管道通过`db.COLLECTION_NAME.aggregate([...])`方法来实现。 一、MongoDB聚合管道(Aggregation Pipeline) 聚合管道由多个阶段组成,每个阶段都会接收上一阶段处理后的结果,并对其进行进一步的...

    nodejs+mongodb aggregate级联查询操作示例

    总结来说,这个示例展示了如何在Node.js中使用MongoDB的聚合框架`aggregate`进行级联查询,包括匹配、分组、排序和限制结果,以及使用EventProxy进行并发控制。这种方法在处理关联数据和复杂数据分析时非常有用,...

    MongoDB简单聚合函数.pdf

    除了这些简单的聚合函数外,MongoDB还提供了一个更强大的聚合框架——`aggregate`方法,它允许用户通过一系列的阶段(pipeline stages)进行数据处理,如`$match`、`$group`、`$sort`、`$project`等,实现更复杂的...

    MongoDB之聚合aggregate操作

    关于mongodb的高级操作,包括聚合、主从复制、分片、备份与恢复、MR。 一、聚合 aggregate 聚合(aggregate)主要用于计算数据,类似sql中的sum()、avg() 语法: db.集合名称.aggregate([{管道:{表达式}}]) 管道:...

    Mongodb在CSharp里实现Aggregate实例

    Aggregate是Mongodb中的一种数据聚合方式,通过使用聚合管道来处理数据,从而实现数据的过滤、分组、排序等操作。 首先,我们需要了解Mongodb的聚合管道的基本概念。聚合管道是指一系列的数据处理阶段,每个阶段都...

    meteor-aggregate, 对 Meteor的适当的MongoDB聚合支持.zip

    meteor-aggregate, 对 Meteor的适当的MongoDB聚合支持 meteorhacks:aggregate为 Meteor 添加适当聚合支持的简单软件包。 这个包在 Mongo.Collection 实例上公开了 .aggregate 方法。这只在服务器端工作,没有...

    JAVA mongodb 聚合几种查询方式详解

    JAVA 中使用 MongoDB 的聚合查询方式有多种,包括使用 BasicDBObject 和 DBObject 两种方式。通过本文的介绍,读者可以了解聚合查询的基础知识和实现方式,从而更好地使用 MongoDB 实现复杂的数据分析和处理。

    mongoDB中聚合函数java处理示例详解

    本文将介绍 MongoDB 中聚合函数的 Java 处理示例详解,通过示例代码介绍了非常详细,对大家学习或者使用 MongoDB 具有一定的参考学习价值。 MongoDB 中聚合函数的基本概念 在 MongoDB 中,聚合函数是一个 pipeline...

    spring data mongodb 聚合 管道

    在Java中,我们可以使用Spring Data MongoDB的API来构建并执行这个聚合管道。以下是一个具体的Java代码示例: ```java import static org.springframework.data.mongodb.core.aggregation.Aggregation.*; import ...

    MongoDB聚合分组取第一条记录的案例与实现方法

    这个任务在MongoDB中可以通过聚合框架(`aggregate`)来实现。 首先,我们了解数据记录的格式。记录包含了多个字段,如 `_id`、`_class`、`resourceUrl`、`refererDomain`、`resourceType`、`ip`、`createTime` 和 `...

Global site tag (gtag.js) - Google Analytics