温馨提示×

数据库mongodb的聚合操作

小樊
81
2024-11-15 01:02:40
栏目: 云计算

MongoDB 是一个基于文档的 NoSQL 数据库,它支持丰富的聚合操作来处理和分析数据。聚合操作是通过聚合管道(aggregation pipeline)来实现的,管道中的一系列阶段(stages)会对数据进行各种处理和转换。

以下是一些常用的 MongoDB 聚合操作:

  1. $match:过滤数据,只输出符合条件的文档。类似于 SQL 中的 WHERE 子句。
{
  $match: {
    age: { $gt: 18 }
  }
}
  1. $project:选择需要的字段,排除不需要的字段。类似于 SQL 中的 SELECT 子句。
{
  $project: {
    _id: 0,
    name: 1,
    age: 1
  }
}
  1. $group:根据指定的字段对文档进行分组,并对每个分组执行聚合操作。类似于 SQL 中的 GROUP BY 子句。
{
  $group: {
    _id: "$city",
    count: { $sum: 1 },
    avgAge: { $avg: "$age" }
  }
}
  1. $sort:对文档进行排序。类似于 SQL 中的 ORDER BY 子句。
{
  $sort: {
    age: -1
  }
}
  1. $limit:限制输出文档的数量。类似于 SQL 中的 LIMIT 子句。
{
  $limit: 10
}
  1. $skip:跳过指定数量的文档。类似于 SQL 中的 OFFSET 子句。
{
  $skip: 5
}
  1. $unwind:将数组字段拆分成多个文档。类似于 SQL 中的 UNNEST 操作。
{
  $unwind: "$hobbies"
}
  1. $lookup:将另一个集合的文档与当前文档进行连接。类似于 SQL 中的 JOIN 操作。
{
  $lookup: {
    from: "users",
    localField: "userId",
    foreignField: "_id",
    as: "userDetails"
  }
}
  1. $addFields / $set:向文档中添加新的字段或更新现有字段的值。类似于 SQL 中的 SET 子句。
{
  $addFields: {
    isAdult: { $gt: ["$age", 18] }
  }
}
  1. $project:更新文档的字段选择,可以用于重命名、删除或计算字段。
{
  $project: {
    _id: 0,
    name: 1,
    age: 1,
    isAdult: { $eq: ["$age", 18] }
  }
}

这些聚合操作可以组合使用,以实现更复杂的数据处理和分析。在实际应用中,可以根据需求选择合适的聚合操作来满足特定的数据处理需求。

0