16、MongoDB实战:MongoDB的文档操作-MongoDB聚合查询-7100字匠心出品

MongoDB 的文档操作-MongoDB 聚合查询

    • 1.求和 - $sum
  • 2.条件筛选 - $match

  • 3.最大值 - $max

  • 4.最小值 - $min

  • 5.平均值 - $avg

  • 6.统计结果返回数组 - $push

  • 7.数组字段拆分 - $unwind

  • 8.管道操作

    • 8.1 $project-聚合投影约束
    • 8.2 $project-字符串处理
    • 8.3 $project-算术运算
    • 8.4 $project-日期操作
      • 8.4.1 MongoDB 中的日期处理
      • 8.4.2 $project-日期处理
  • 在 MongoDB 中我们可以通过 aggregate()函数来完成一些聚合查询,aggregate()函数主要用于处理诸如统计,平均值,求和等,并返回计算后的数据结果

  • 语法格式:
    db.COLLECTION_NAME.aggregate([{$ group:{_id:"$ 分组键名","$ 分组键名",…,别名:{聚合运算:"$运算列"}}},{条件筛选:{键名:{运算条件:运算值}}}])

  • 常见的 mongo 的聚合操作和 mysql 的查询做类比
    *

1.求和 - $sum

  • 查询 dev 集合中一共有多少个文档。
  • 相当于 sql 语句:SELECT count(*) AS count FROM dev
  • db.dev.aggregate([{$ group:{_id:null,count:{$sum:1}}}])
  • $group:分组,代表聚合的分组条件
  • _id:分组的字段。相当于 SQL 分组语法 group by column_name 中的 column_name 部分。如果根据某字段的值分组,则定义为_id:’$字段名’。所以此案例中的 null 代表一个固定的字面值’null’。
  • count:返回结果字段名。可以自定义,类似 SQL 中的字段别名
  • $sum:求和表达式。相当于 SQL 中的 sum()
  • 1:累加值。
    *
  • 查询 dev 集合中的所有 size 键中的值的总和
  • 相当于 sql 语句:SELECT sum(size) AS totalSize FROM dev
  • db.dev.aggregate([{$ group:{_id:null,totalSize:{$ sum:"$size"}}}])
  • $size”:代表文档中的 szie 字段的值。
    *
  • 对每一个 title 进行分组并计算每组中的 size 的总和
  • 相当于 sql 语句:SELECT title AS _id , sum(size) AS totalSize FROM dev GROUP BY title
  • db.dev.aggregate([{$ group:{_id:"$ title",totalSize:{$ sum:"$size"}}}])
    *

2.条件筛选 - $match

  • 查询 dev 集合有多少文档的 size 大于 200
  • db.dev.aggregate([{$ match:{size:{$ gt:200}}},{$ group:{_id:null,totalSize:{$sum:1}}}])
  • 相当于 SQL 语句:SELECT count(*) FROM dev WHERE size > 200
  • $match:匹配条件,相当于 SQL 中的 where 子句,代表聚合之前进行条件筛选

版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: