聚合框架是MongoDB的高级查询语言,允许我们通过转化合并由多个文档的数据来生成新的在单个文档里不存在的文档信息。通俗一点来说,可以把MongoDB的聚合查询等价于SQL的GROUP BY语句。


聚合操作过程可以理解为下面的图,每个聚合操作完后,将输出数据作为下一个聚合操作的输入数据。



聚合操作汇总

--------------------- 

作者:R鲜森 

来源:CSDN 

原文:https://blog.csdn.net/sinat_32366329/article/details/82080900 

版权声明:本文为博主原创文章,转载请附上博文链接!


mongo聚合查询有操作顺序之分,例如当拆分查询一个文档中的某个字段时使用$unwind,此时应该优先使用$match后在使用$unwind,这样减少数据的拆分

例如:

db.xt_exer_record.aggregate([
  {
    "$match": {
      "aeid": 2236856,
      "tags.tv": {
        "$in": [
          53603,
          53616,
          53617,
        ]
      }
    }
  },
  {
    "$unwind": "$tags"
  },
  {
    "$match": {
      "aeid": 2236856,
      "tags.tv": {
        "$in": [
          53603,
          53616,
          53617,
        ]
      }
    }
  },
  {
    "$group": {
      "_id": {
        "tagID": "$tags.tv"
      },
      "scoreSum": {
        "$sum": "$score"
      },
      "totalSum": {
        "$sum": "$total"
      }
    }
  },
  {
    "$project": {
      "_id": 0,
      "tagID": "$_id.tagID",
      "scoreSum": "$scoreSum",
      "totalSum": "$totalSum"
    }
  }
])