`

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 aggregate 运用篇个人总结

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

    MongoDB 聚合管道(Aggregation Pipeline)

    MongoDB 聚合管道(Aggregation Pipeline) - 张善友 - 博客园

    mongodb group aggregate项目实战笔记

    mongodb group aggregate项目实战笔记 管道聚合 mongodb group按时间分组,用aggregate管道聚合 会比group的处理效率要高而且更灵活方便

    MongoDB 高级查询 aggregate 聚合管道

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

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

    一、MongoDB 聚合管道(Aggregation Pipeline) 二、MongoDB Aggregation 管道操作符与表达式 三、 数据模拟

    MongoDB之聚合aggregate操作

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

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

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

    MongoDB 聚合

    MongoDB中聚合的方法使用aggregate()。 语法 aggregate() 方法的基本语法格式如下所示: >db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION) 实例 集合中的数据如下: { _id: ObjectId(7df78ad8902c) title: ...

    MongoDB聚合操作详细步骤.pdf

    mongo聚合框架aggregate使用,管道 $match 过滤数据,只输出符合结果的文档,$limit $skip 限制管道输出的结果个数 和 跳过制定数量的结果,并且返回剩下的结果

    MongoDB的聚合框架Aggregation Framework入门学习教程

    MongoDB中的聚合aggregate主要用于处理数据计算,这里我们就来详细整理MongoDB的聚合框架Aggregation Framework入门学习教程,需要的朋友可以参考下

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

    MongoDB中聚合的方法使用aggregate()。 语法 aggregate() 方法的基本语法格式如下所示: >db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION) 我们知道,MongoDB属于文档型数据库,其存储的文档类型都是JSON对象。...

    MongoDB入门教程之聚合和游标操作介绍

    主要介绍了MongoDB入门教程之聚合和游标操作介绍,聚合和游标可以说是MongoDB中的高级操作了,需要的朋友可以参考下

    loopback-mongo-aggregate-mixin:回送混入以查询MongoDB聚合管道并根据结果构建实例

    此Loopback mixin旨在与MongoDB连接器一起使用。 适用于环回2和3。 如何安装 通过NPM安装软件包 npm i -S @aliatech/loopback-mongo-aggregate-mixin 通过Yarn安装软件包 yarn add --prod @aliatech/loopback-...

    MongoDB基本教程.zip

    aggregate聚合管道语句汇总; MongoDb 数据库介绍、安装、...MongoDB的高级查询aggregate聚合管道; Mongodb4.x介绍以及Mongodb账户权限配置; 关系型数据库表(集合)与表(集合)之间的几种关系(理论-新手必看 )

    mongo-round:使用 MongoDB 聚合框架时。 此辅助函数可帮助您对数字进行四舍五入

    mongo-round 使用时执行数字舍入的辅助函数。 npm install mongo-round用法 var round = require ( 'mongo-round' ) ; 零小数位: db . myCollection . aggregate ( [{ $project : {roundValue : round ( '$value' )...

    Mongodb中MapReduce实现数据聚合方法详解

    在Mongodb中,给我们提供了三种用于数据聚合的方式: (1)简单的用户聚合函数; (2)使用aggregate进行统计; (3)使用mapReduce进行统计; 今天我们首先来讲讲mapReduce是如何统计,在后续的文章中,将另起...

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

    主要给大家介绍了关于MongoDB聚合分组取第一条记录的案例与实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    mongodb中非常好用的Aggregate入门教程

    aggregate 翻译过来是聚合的意思, 但是在实际的使用的它的体验特别像linux中的管道, 每个管道处理完之后再把结果交个下一个管道, 你的数据就像水流, 最后通过各个管道你能够得到你想要的数据 我们一般用...

    sparrowql:声明式MongoDB聚合

    声明式MongoDB聚合。 | | 包括什么? 仅在需要时自动进行$lookup 声明式管道生成 针对多集合查询进行了优化 使用SparrowQL的理由 创建SparrowQL的目的是使您对多集合查询的工作更加轻松和便捷。 SparrowQL是使...

Global site tag (gtag.js) - Google Analytics