MongoDB 聚合aggregate

    基本语法格式如下所示:

    集合中的数据如下:

    现在我们通过以上集合计算每个作者所写的文章数,以上实例类似sql语句:

    使用aggregate()计算结果如下:

    在上面的例子中,我们通过字段by_user字段对数据进行分组,并计算by_user字段相同值的总和。

    下表展示了一些聚合的表达式:

    管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的输入。

    MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操作是可以重复的。

    聚合管道示意图:

    相当于Sql语句: Select cust_id,sum(amount)as total from orders where status= "A"

    这里我们介绍一下聚合框架中常用的几个操作:

    • $project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。
    • $match:用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询操作。
    • $limit:用来限制MongoDB聚合管道返回的文档数。
    • $unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。
    • $group:将集合中的文档分组,可用于统计结果。
    • $sort:将输入文档排序后输出。
    SQL Terms, Functions, and ConceptsMongoDB Aggregation Operators
    WHERE
    GROUP BY$group
    HAVING
    SELECT$project
    ORDER BY
    LIMIT$limit
    SUM()
    COUNT()$sum
    join New in version 3.2.