MongoDB 聚合怎么写,更复杂的聚合案例
MongoDB 的复杂聚合查询通常涉及多个阶段,如$match
(筛选)、$group
(分组)、$sort
(排序)、$limit
(限制结果数量)等。以下是一个更复杂的聚合查询例子,它涉及到多级分组、过滤和排序:
db.collection.aggregate([
// 筛选出指定条件的文档
{
$match: {
status: "A"
}
},
// 按照某些字段进行分组,并计算每个组的总数和其他统计数据
{
$group: {
_id: { field1: "$field1", field2: "$field2" }, // 分组的键
count: { $sum: 1 }, // 统计每个组的文档数量
totalAmount: { $sum: "$amount" }, // 统计每个组的金额总和
averageAmount: { $avg: "$amount" } // 统计每个组的平均金额
}
},
// 按照总金额进行降序排序
{
$sort: {
totalAmount: -1
}
},
// 限制输出结果数量
{
$limit: 10
}
]);
这个例子中,我们首先筛选出状态为 "A" 的文档,然后根据字段 field1
和 field2
进行分组,并计算每个分组中的文档数量、金额总和以及平均金额,并按照总金额降序排序最后输出前10个结果。
评论已关闭