📅  最后修改于: 2023-12-03 15:17:41.986000             🧑  作者: Mango
在 MongoDB 中,聚合是一种强大的工具,可以使用它来对数据进行查询、分析和操作。聚合管道是 MongoDB 提供的最常用的聚合方式,它是由多个阶段组成的管道,在每个阶段中对文档进行转换,从而达到一定的目的。
聚合管道由多个阶段组成,每个阶段都会对输入的文档进行处理,并将输出传递到下一个阶段。常用的聚合管道阶段有以下几种:
$match
$match
阶段会根据指定的条件筛选出符合条件的文档,并将其输出给下一个阶段。常见的筛选条件包括等于、大于、小于、不等于、包含等。
[
{
$match: {
name: "user1"
}
}
]
$group
$group
阶段用于对文档进行分组,并进行聚合计算。通过指定分组依据和聚合计算条件,可以得出每个分组的统计结果。
[
{
$group: {
_id: "$category",
total: { $sum: "$qty" }
}
}
]
$sort
$sort
阶段用于对文档进行排序。可以指定排序依据、排序方式和排列顺序。
[
{
$sort: {
date: -1
}
}
]
$project
$project
阶段用于筛选出文档中的指定字段,并进行重命名、计算和类型转换等操作。
[
{
$project: {
_id: 0,
name: 1,
count: { $sum: "$qty" }
}
}
]
$limit
$limit
阶段用于限制输出文档的数量。
[
{
$limit: 10
}
]
$lookup
$lookup
阶段用于对两个集合之间的数据进行查询和连接。可以根据指定的字段进行数据匹配和关联。
[
{
$lookup: {
from: "orders",
localField: "_id",
foreignField: "user_id",
as: "user_orders"
}
}
]
下面是一个示例聚合管道,它会对 sales
集合进行聚合计算,统计出每个商品的总销售量和平均销售价,并按照销售量从高到低进行排序。
[
{
$group: {
_id: "$product_id",
total_sales: { $sum: "$qty" },
avg_price: { $avg: "$price" }
}
},
{
$sort: {
total_sales: -1
}
}
]
聚合管道是 MongoDB 中非常有用的一个功能,它可以对数据进行灵活的查询、分析和操作。掌握聚合管道的使用方法,可以让我们更加高效地处理 MongoDB 中的数据。