当然可以!以下是MongoDB中聚合函数的使用方法和一些具体示例,带有注释解释:

  1. $match

    • 用途:筛选符合条件的文档。
    • 示例:筛选出age大于20的文档。
db.collection.aggregate([
  {
    $match: {
      age: { $gt: 20 }
    }
  }
])
  1. $group

    • 用途:对文档进行分组,并计算每组的聚合结果。
    • 示例:计算每个name的平均年龄。
db.collection.aggregate([
  {
    $group: {
      _id: "$name",
      averageAge: { $avg: "$age" }
    }
  }
])
  1. $sort

    • 用途:对文档进行排序。
    • 示例:按age降序排序。
db.collection.aggregate([
  {
    $sort: { age: -1 }
  }
])
  1. $skip

    • 用途:跳过指定数量的文档。
    • 示例:跳过前10个文档。
db.collection.aggregate([
  { $skip: 10 }
])
  1. $limit

    • 用途:限制返回的文档数量。
    • 示例:只返回5个文档。
db.collection.aggregate([
  { $limit: 5 }
])
  1. $project

    • 用途:选择或排除某些字段,并重新命名、计算新字段。
    • 示例:选择name和age字段,并计算年龄差。
db.collection.aggregate([
  {
    $project: {
      name: 1,   // 选择name字段并保留原始值(1)或排除(0)其他字段。这里选择保留name字段。
      ageDifference: { $subtract: [25, "$age"] }  // 计算年龄差,这里假设年龄为25。$subtract用于减法运算。
    }
  }
])