You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MongoDB中为筛选后的文档的Timestamp字段添加小时数?

用单条updateMany修正MongoDB错误时间戳

你可以直接在updateMany中结合查询条件和聚合式更新操作,无需先执行聚合查询再单独更新。以下是整合后的完整语句:

db.opts.updateMany(
  // 查询条件:匹配UTC时间小时为13的文档
  {
    $expr: { $eq: [ { $hour: "$timestamp" }, 13 ] }
  },
  // 更新操作:给timestamp增加7小时(换算为7*60*60*1000毫秒)
  {
    $set: {
      timestamp: { $add: [ "$timestamp", 7 * 60 * 60 * 1000 ] }
    }
  }
)

关键细节说明:

  • 精准筛选受影响文档:通过$expr允许在查询阶段使用聚合运算符$hour,直接判断timestamp的UTC小时数是否为13,确保只修改错误录入的文档。
  • 一步完成字段更新:无需定义new_timestamp中间字段,直接在$set中用$add计算新时间戳,把原时间戳加上7小时对应的毫秒数,完成修正。

执行效果:

运行该语句后,原文档中timestamp为ISODate("2024-06-17T13:00:00.000+0000")的条目会被修正为ISODate("2024-06-17T20:00:00.000+0000"),原本UTC时间20:00的文档不会被改动,完全符合你的期望。

内容的提问来源于stack exchange,提问作者fip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 08:05:00