MongoDB $hour 运算符介绍

MongoDB $hour 运算符是一个用于从日期时间值中提取小时部分的聚合运算符。在 MongoDB 中,聚合运算符被广泛用于在文档集合中执行数据聚合操作。

语法

$hour 运算符的语法如下:

{ $hour: <dateExpression> }

其中,<dateExpression> 表示一个表达式,它可以是一个日期对象、一个日期字符串或者一个可以转换为日期的表达式。

使用场景

$hour 运算符通常用于聚合查询中,对时间类型的字段进行分组、筛选和计算。例如,可以使用 $hour 运算符来查找在指定时间范围内的数据,或者对数据按小时进行聚合统计。

示例

以下是一个使用 $hour 运算符的示例,假设我们有一个 orders 集合,其中每个文档都包含一个 order_time 字段,表示订单创建的时间:

{ "_id" : 1, "order_time" : ISODate("2022-03-02T09:23:12.374Z"), "total_amount" : 100 }
{ "_id" : 2, "order_time" : ISODate("2022-03-02T10:34:56.789Z"), "total_amount" : 200 }
{ "_id" : 3, "order_time" : ISODate("2022-03-02T11:45:23.456Z"), "total_amount" : 150 }
{ "_id" : 4, "order_time" : ISODate("2022-03-02T12:56:34.567Z"), "total_amount" : 180 }

如果要按小时统计每个小时的订单数量,可以使用以下聚合查询:

db.orders.aggregate([
  {
    $group: {
      _id: { $hour: "$order_time" },
      count: { $sum: 1 }
    }
  }
])

上述聚合查询将会得到以下结果:

{ "_id" : 9, "count" : 1 }
{ "_id" : 10, "count" : 1 }
{ "_id" : 11, "count" : 1 }
{ "_id" : 12, "count" : 1 }

上述结果表示在上午 9 点、10 点、11 点和 12 点分别有一笔订单。

结论

$hour 运算符是 MongoDB 中的一个聚合运算符,它可用于从日期时间值中提取小时部分,通常用于聚合查询中,对时间类型的字段进行分组、筛选和计算。通过上述示例,可以看出 $hour 运算符的使用方法和效果。