MongoDB如何按小时维度获取日期时间字段的去重值
你可以通过MongoDB聚合框架实现按小时维度对日期字段去重的需求,具体方案如下:
方案1:MongoDB 5.0及以上版本(推荐)
使用内置的$dateTrunc运算符直接将日期截断到小时维度,再分组去重即可:
db.getCollection('cars').aggregate([ // 按截断到小时的deparutre_date分组,天然实现去重 { $group: { _id: { $dateTrunc: { date: "$deparutre_date", unit: "hour", timezone: "UTC" } } } }, // 调整输出字段格式 { $project: { _id: 0, hour_date: "$_id" } } ])
执行后输出的hour_date字段就是你需要的、按小时对齐的去重日期结果。
方案2:兼容低版本MongoDB
如果你的MongoDB版本低于5.0,可以先把日期格式化为小时对齐的字符串,再转回日期类型即可:
db.getCollection('cars').aggregate([ { $group: { _id: { $dateFromString: { dateString: { $dateToString: { format: "%Y-%m-%dT%H:00:00.000Z", date: "$deparutre_date", timezone: "UTC" } } } } } }, { $project: { _id: 0, hour_date: "$_id" } } ])
注意:如果你的日期需要按特定时区对齐,修改上面
timezone参数的取值即可,默认使用UTC时区和你原查询的输出格式一致。
内容的提问来源于stack exchange,提问作者ProcolHarum
相关产品推荐
相关产品推荐

