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

MongoDB/Mongoose如何向复杂嵌套结构的指定数组批量添加元素

错误根因

你当前的报错是因为更新路径没有正确定位到protocolli数组中匹配条件的单个元素,protocolli.parametri的写法会被MongoDB识别为要给整个protocolli数组添加parametri字段,而非目标子对象的内嵌数组。


解决方法

使用MongoDB的数组位置占位符$来指代查询条件中匹配到的protocolli数组元素下标,将更新字段路径调整为protocolli.$.parametri即可,修改后代码如下:

this.model.updateMany(
  { 'protocolli.nome': ProtocolloAlert.PROTOCOLLO_2 },
  {
    $push: {
      'protocolli.$.parametri': {
        $each: [
          TipoParametro.FAT_MASS,
          TipoParametro.DISTANCE,
          TipoParametro.MUSCLE_MASS,
          TipoParametro.STEPS,
          TipoParametro.CALORIES,
          TipoParametro.MINUTES,
        ],
      },
    },
  }
)

补充说明

  • 如果要避免重复添加相同的参数值,可以将$push替换为$addToSet,会自动对数组内的值去重。
  • Mongoose中updateMany方法默认会更新所有匹配的文档,不需要额外配置{ multi: true }参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:24:00