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 运算符时需要保证输入的字段是合法的日期类型,否则将会导致运算失败。