MongoDB $dayOfWeek 运算符介绍
$dayOfWeek
是 MongoDB 中的一个聚合运算符,用于从日期值中提取一周中的星期几信息。它返回一个整数值,表示星期几,范围从 1(星期天)到 7(星期六)。
语法
$dayOfWeek
运算符的语法如下:
{ $dayOfWeek: <dateExpression> }
其中,<dateExpression>
表示一个日期表达式,可以是字段引用、日期字面量或其他表达式。
使用场景
$dayOfWeek
运算符通常用于聚合操作,可以对包含日期字段的文档进行分组、排序、筛选等操作。例如,我们可以使用 $dayOfWeek
运算符统计某个时间段内,每个星期几的订单数量、销售额等指标。
示例
假设我们有一个集合 orders,其中包含多个订单的信息,包括订单号、下单时间等。现在,我们需要统计每个星期几的订单数量,并按照数量从大到小排序。
假设集合 orders 中有以下文档:
{ "order_id": 1, "order_date": ISODate("2022-02-28T10:30:00Z") }
{ "order_id": 2, "order_date": ISODate("2022-03-01T11:30:00Z") }
{ "order_id": 3, "order_date": ISODate("2022-03-03T15:30:00Z") }
{ "order_id": 4, "order_date": ISODate("2022-03-04T18:30:00Z") }
{ "order_id": 5, "order_date": ISODate("2022-03-05T09:30:00Z") }
{ "order_id": 6, "order_date": ISODate("2022-03-05T14:30:00Z") }
可以使用以下聚合操作实现:
db.orders.aggregate([
{
$group: {
_id: { $dayOfWeek: "$order_date" },
count: { $sum: 1 }
}
},
{
$sort: { count: -1 }
}
])
执行以上聚合操作后,将返回以下结果:
{ "_id": 7, "count": 2 }
{ "_id": 5, "count": 2 }
{ "_id": 6, "count": 1 }
{ "_id": 2, "count": 1 }
结果表示,星期六和星期天是订单数量最多的两天,分别有 2 个订单。星期五和星期二各有 1 个订单。
结论
$dayOfWeek
运算符可以用于将日期转换为星期几,并在聚合操作中统计每个星期几出现的次数。这在对包含日期的文档进行分析时非常有用。需要注意的是, $dayOfWeek
运算符返回的是一个数字,其中 1 表示星期日,2 表示星期一,以此类推,7 表示星期六。