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

如何使用JavaScript在MongoDB中更新指定条件的子数组元素

首先注意 findByIdAndUpdate 第一个参数需要传入文档ID,你示例中传整个old文档是不符合要求的,直接传入最开始的sportId或者old._id即可。

[LOGIC] 位置需要填入MongoDB的更新操作语句,搭配arrayFilters配置项实现数组元素的条件更新,完整的代码写法如下:

const updated = await Sports.findByIdAndUpdate(
  sportId,
  // 以下为[LOGIC]部分的内容
  {
    $set: {
      "markets.$[target].enabled": false
    }
  },
  // 配置项需要补充arrayFilters指定匹配规则
  {
    new: true,
    arrayFilters: [
      { "target.defId": "LOOKATME" }
    ]
  }
);

逻辑说明

  • 这里使用了MongoDB带条件的位置运算符$[<标识符>],$[target]会匹配markets数组中满足arrayFilters定义规则的元素
  • arrayFilters里指定仅匹配defId为LOOKATME的数组元素,最终只会修改符合条件的元素的enabled字段为false

这种写法无需提前查询原文档,直接传入sportId即可执行更新,减少一次数据库查询开销。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:15:03