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

MongoDB含日期字段的对象数组更新问题求助

MongoDB更新对象数组内日期字段的解决方案

完整更新语句

使用聚合管道形式的updateOne,可以同时更新顶层日期字段和数组内的日期字段:

db.teacher.updateOne(
  { _id: "6434cf" }, // 替换为目标文档的_id
  [
    {
      $set: {
        start_time: { $dateAdd: { startDate: "$start_time", unit: "minute", amount: 60 } },
        end_time: { $dateAdd: { startDate: "$end_time", unit: "minute", amount: 60 } },
        time_slots: {
          $map: {
            input: "$time_slots",
            as: "slot",
            in: {
              sl_no: "$$slot.sl_no",
              dateTime: { $dateAdd: { startDate: "$$slot.dateTime", unit: "minute", amount: 60 } }
            }
          }
        }
      }
    }
  ]
)

核心逻辑说明

  • 采用聚合管道更新模式,支持引用文档自身字段进行计算
  • 顶层的start_time和end_time直接用$dateAdd追加指定时长
  • 对于time_slots数组,使用$map遍历每个元素:保留sl_no字段不变,对dateTime执行相同的$dateAdd操作
  • amount参数设为60对应延迟1小时,可根据需求调整数值

示例文档

db={
  "teacher": [
    {
      "_id": "6434cf",
      "start_time": ISODate("2023-03-22T07:00:25.787Z"),
      "end_time": ISODate("2023-03-22T10:00:35.604Z"),
      "duration": "15min",
      "time_slots": [
        {
          "sl_no": 1,
          "dateTime": ISODate("2023-03-22T06:30:25.787Z")
        },
        {
          "sl_no": 2,
          "dateTime": ISODate("2023-03-22T06:45:25.787Z")
        }
      ]
    },
    {
      "_id": "6434ctd",
      "start_time": ISODate("2023-03-23T07:00:25.787Z"),
      "end_time": ISODate("2023-03-23T10:00:35.604Z"),
      "duration": "20min",
      "time_slots": [
        {
          "sl_no": 1,
          "dateTime": ISODate("2023-03-23T06:30:25.787Z")
        },
        {
          "sl_no": 2,
          "dateTime": ISODate("2023-03-23T06:50:25.787Z")
        }
      ]
    }
  ]
}

更新后期望输出

{
  "_id": "6434cf",
  "start_time": ISODate("2023-03-22T08:00:25.787Z"),
  "end_time": ISODate("2023-03-22T11:00:35.604Z"),
  "duration": "15min",
  "time_slots": [
    {
      "sl_no": 1,
      "dateTime": ISODate("2023-03-22T07:30:25.787Z")
    },
    {
      "sl_no": 2,
      "dateTime": ISODate("2023-03-22T07:45:25.787Z")
    }
  ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 03:53:07