MongoDB $dayOfMonth 运算符介绍
Mongodb $dayOfMonth
运算符是用于提取日期字段中月份中的日期(1-31)的聚合表达式。此运算符返回一个整数。
语法
{ $dayOfMonth: <dateExpression> }
使用场景
Mongodb $dayOfMonth
运算符通常用于聚合操作中,以便从日期字段中提取出月份中的日期。它可以与其他日期运算符一起使用,例如 $month
、 $year
和 $hour
运算符,以提取日期的各个部分。
示例
假设我们有一个集合 sales,其中包含每个员工的销售日期和销售额。我们希望找出每个月的总销售额,并按月份日期排序。
以下是示例文档:
{ "_id" : 1, "employee" : "John", "saleDate" : ISODate("2022-02-02T08:00:00Z"), "saleAmount" : 100 }
{ "_id" : 2, "employee" : "John", "saleDate" : ISODate("2022-02-10T08:00:00Z"), "saleAmount" : 200 }
{ "_id" : 3, "employee" : "Jane", "saleDate" : ISODate("2022-03-12T08:00:00Z"), "saleAmount" : 150 }
{ "_id" : 4, "employee" : "Jane", "saleDate" : ISODate("2022-03-23T08:00:00Z"), "saleAmount" : 250 }
我们可以使用 $dayOfMonth
运算符和 $group
聚合操作来计算每个月的总销售额,并按日期排序。以下是相应的聚合操作:
db.sales.aggregate([
{
$group: {
_id: {
month: { $month: "$saleDate" },
dayOfMonth: { $dayOfMonth: "$saleDate" }
},
totalSales: { $sum: "$saleAmount" }
}
},
{
$sort: { "_id.month": 1, "_id.dayOfMonth": 1 }
}
])
执行以上聚合操作后,将返回以下结果:
{ "_id" : { "month" : 2, "dayOfMonth" : 2 }, "totalSales" : 100 }
{ "_id" : { "month" : 2, "dayOfMonth" : 10 }, "totalSales" : 200 }
{ "_id" : { "month" : 3, "dayOfMonth" : 12 }, "totalSales" : 150 }
{ "_id" : { "month" : 3, "dayOfMonth" : 23 }, "totalSales" : 250 }
上述示例中,使用 $dayOfMonth
运算符从日期字段中提取了月份中的日期,并用它来聚合每个月的销售额。最后,按照月份日期排序输出结果。
结论
在本文中,我们介绍了 MongoDB 的 $dayOfMonth
运算符,它可以用于从日期中提取日份。我们学习了 $dayOfMonth
的语法和使用场景,并通过示例演示了它的用法。
在实际应用中, $dayOfMonth
运算符可以帮助我们方便地从日期中获取日份,以满足不同的业务需求。无论是在聚合管道中进行日期计算,还是在查询中对日期进行过滤, $dayOfMonth
运算符都是一个非常有用的工具。
最后,我们需要注意的是,在使用 $dayOfMonth
运算符时需要保证输入的字段是合法的日期类型,否则将会导致运算失败。