MongoDB $millisecond 运算符介绍
在 MongoDB 中, $millisecond
运算符用于从日期中提取毫秒部分。它可以与聚合管道中的 $project
或 $addFields
阶段一起使用。此运算符只能用于日期类型的字段。
语法
$millisecond
运算符的语法如下:
{ $millisecond: <dateExpression> }
其中,<dateExpression>
表示要提取毫秒部分的日期表达式,可以是以下之一:
- 一个日期字段的名称,如
$dateField
。 - 一个日期值,如
ISODate("2022-03-04T00:00:00.000Z")
。 - 一个返回日期值的表达式,如
$toDate
。
使用场景
$millisecond
运算符常用于需要对日期进行精确计算的场景,例如在日志记录中记录请求响应时间时,可以使用 $millisecond
运算符提取日期的毫秒部分,以便对响应时间进行更细粒度的测量和分析。
示例
假设有一个集合 orders
,其中包含多个订单的信息,包括订单号、下单时间等。现在,我们需要使用 $millisecond
运算符提取下单时间的毫秒部分,并将其作为一个新字段添加到每个文档中。
以下是一个使用 $millisecond
运算符的示例:
数据
db.orders.insertMany([
{ orderNo: "001", orderTime: ISODate("2022-03-04T00:01:23.456Z") },
{ orderNo: "002", orderTime: ISODate("2022-03-04T00:02:34.567Z") },
{ orderNo: "003", orderTime: ISODate("2022-03-04T00:03:45.678Z") }
])
聚合操作
db.orders.aggregate([
{
$addFields: {
orderMillisecond: { $millisecond: "$orderTime" }
}
}
])
结果
执行以上聚合操作后,将返回以下结果:
{ "_id": ObjectId("..."), "orderNo": "001", "orderTime": ISODate("2022-03-04T00:01:23.456Z"), "orderMillisecond": 456 },
{ "_id": ObjectId("..."), "orderNo": "002", "orderTime": ISODate("2022-03-04T00:02:34.567Z"), "orderMillisecond": 567 },
{ "_id": ObjectId("..."), "orderNo": "003", "orderTime": ISODate("2022-03-04T00:03:45.678Z"), "orderMillisecond": 678 }
结论
$millisecond
运算符可用于从日期中提取毫秒部分,并在聚合管道中使用。它适用于需要对日期进行更细粒度计算的场景。