本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
$dateDiff
5.0 版的新增内容
弹性集群不支持。
$dateDiff聚合运算符以指定单位计算两个日期之间的差。它返回开始日期和结束日期之间跨越单位边界的数量。
参数
-
startDate:开始日期表达式。 -
endDate:结束日期表达式。 -
unit: 差异的时间单位。支持的单位是year、quarter、month、week、day、hour、minute、second、和millisecond。
示例(MongoDB 外壳)
以下示例演示如何使用$dateDiff运算符来计算从下单到交货之间的天数。
创建示例文档
db.shipments.insertMany([ { orderId: 1001, orderDate: ISODate("2025-01-10T08:00:00Z"), deliveryDate: ISODate("2025-01-15T14:30:00Z") }, { orderId: 1002, orderDate: ISODate("2025-02-05T10:00:00Z"), deliveryDate: ISODate("2025-02-12T16:45:00Z") } ]);
查询示例
db.shipments.aggregate([ { $project: { orderId: 1, orderDate: 1, deliveryDate: 1, daysToDeliver: { $dateDiff: { startDate: "$orderDate", endDate: "$deliveryDate", unit: "day" } } } } ]);
输出
[
{
_id: ObjectId('6924a5f2d66dcae121d29517'),
orderId: 1001,
orderDate: ISODate('2025-01-10T08:00:00.000Z'),
deliveryDate: ISODate('2025-01-15T14:30:00.000Z'),
daysToDeliver: 5
},
{
_id: ObjectId('6924a5f2d66dcae121d29518'),
orderId: 1002,
orderDate: ISODate('2025-02-05T10:00:00.000Z'),
deliveryDate: ISODate('2025-02-12T16:45:00.000Z'),
daysToDeliver: 7
}
]
代码示例
要查看使用该$dateDiff命令的代码示例,请选择要使用的语言的选项卡: