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

MongoDB更新嵌套集合数组字段OperationalDetails的EndTime时报错如何解决

报错原因

报错的核心是部分满足Sector.Code: 'GROC'的文档中,OperationalDetails字段不是数组类型,而是对象类型,全数组更新符$[]无法作用在非数组字段上,因此触发该错误。

正确实现方案

第一步:过滤合法文档执行更新

在查询条件中新增数组类型校验,只匹配OperationalDetails为数组的文档,即可正常执行更新:

db.stores.update(
  {
    "Sector.Code": "GROC",
    // 新增校验:仅匹配OperationalDetails为数组的文档
    "OperationalDetails": { $type: "array" }
  },
  { $set: { "OperationalDetails.$[].EndTime": "06:00 PM" } },
  { multi: true }
)

可选:排查异常字段类型的文档

如果需要先找出OperationalDetails不是数组的异常文档,可执行以下查询:

db.stores.find({
  "Sector.Code": "GROC",
  "OperationalDetails": { $not: { $type: "array" } }
})

你可以根据业务逻辑先修正这些异常文档的字段类型,再执行全量更新即可覆盖所有目标门店。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 07:24:02