MongoDB中如何使用聚合管道?实例讲解

在 MongoDB 中,聚合管道用于对数据进行处理和聚合。它以数据为输入,经过多个处理阶段,产生输出。这些处理阶段被称为聚合阶段。
聚合管道主要用于:

  1. 聚合:计算统计值,组合 and 重塑文档以获得聚合视图。
  2. 处理和过滤数据。
  3. 丰富数据:在结果中添加计算出的字段和值。
  4. 简化数据:缩减结果大小,提取关键数据。

聚合管道的基本语法为:

db.collection.aggregate([
    { <stage1> },
    { <stage2> },
    ...
])

常用的聚合阶段有:

  1. $match:用于进行数据过滤。
    示例:
db.products.aggregate([
   { $match: { price: { $gt: 20 } } } 
])
  1. $group:用于进行数据分组和聚合。
    示例:
db.products.aggregate([
  { 
    $group: {
       _id: "$category",   // group by category
       total: { $sum: "$price" } // sum up prices
    }
  }
])
  1. $project:用于重新定义文档结构,可以用来添加或删除字段。
    示例:
db.products.aggregate([
   {
     $project: {
        name: 1,  // include only the "name" field
        _id: 0   // exclude the "_id" field
     }
   }
])
  1. $sort:用于排序。
    示例:
db.products.aggregate([
   { $sort: { price: 1 } }  // ascending
])
  1. $limit:用于限制结果数量。
    示例:
db.products.aggregate([
   { $limit: 5 }  // first 5 documents
]) 

MongoDB 提供了丰富的聚合阶段来处理数据。熟练掌握聚合管道,可以让我们在 MongoDB 中高效地处理和分析数据。