MongoDB 聚合框架 - 如何按日期范围、按天分组以及每天返回平均值进行匹配

作者:编程家 分类: mongodb 时间:2025-11-15

聚合框架是 MongoDB 中一个非常强大的功能,它允许我们对数据进行复杂的分组、筛选和转换操作。在本文中,我们将探讨如何使用聚合框架按日期范围、按天分组,并计算每天的平均值。

使用聚合框架按日期范围和按天分组

首先,让我们假设我们有一个名为"sales"的集合,其中包含了每天的销售数据。每个文档都包含了日期字段(以日期格式存储)和销售金额字段。

要按日期范围筛选数据,我们可以使用聚合框架中的$match操作符。下面的代码片段演示了如何筛选出指定日期范围内的数据:

javascript

db.sales.aggregate([

{

$match: {

date: {

$gte: ISODate("2021-01-01"),

$lte: ISODate("2021-12-31")

}

}

}

]);

在上述代码中,我们使用$match操作符来筛选出日期在"2021-01-01"和"2021-12-31"之间的数据。

接下来,我们需要按天分组数据。我们可以使用聚合框架中的$group操作符来实现。下面的代码片段演示了如何按天分组数据:

javascript

db.sales.aggregate([

{

$match: {

date: {

$gte: ISODate("2021-01-01"),

$lte: ISODate("2021-12-31")

}

}

},

{

$group: {

_id: { $dayOfMonth: "$date" },

totalAmount: { $sum: "$amount" }

}

}

]);

在上述代码中,我们使用$group操作符来按照日期的天数进行分组,并计算每天的销售总金额。

计算每天的平均值

接下来,我们需要计算每天的平均销售金额。我们可以使用聚合框架中的$avg操作符来实现。下面的代码片段演示了如何计算每天的平均值:

javascript

db.sales.aggregate([

{

$match: {

date: {

$gte: ISODate("2021-01-01"),

$lte: ISODate("2021-12-31")

}

}

},

{

$group: {

_id: { $dayOfMonth: "$date" },

totalAmount: { $sum: "$amount" },

averageAmount: { $avg: "$amount" }

}

}

]);

在上述代码中,我们添加了一个额外的字段"averageAmount",使用$avg操作符计算每天的平均销售金额。

在本文中,我们学习了如何使用 MongoDB 的聚合框架按日期范围、按天分组,并计算每天的平均值。聚合框架是 MongoDB 强大的功能之一,它可以帮助我们进行复杂的数据处理和分析操作。通过合理利用聚合框架,我们可以更好地理解和利用数据,从而做出更明智的决策。

以上就是本文的内容,希望能对你理解 MongoDB 聚合框架的使用有所帮助。感谢阅读!

参考链接:

- MongoDB 聚合框架官方文档:https://docs.mongodb.com/manual/aggregation/