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

Mongoose/Node.js动态更新数组内对象属性的问题

解决方案

你遇到的问题是因为在对象字面量中直接使用字符串字面量作为键时,变量不会被解析。要动态生成查询和更新的路径,需要使用ES6计算属性名(用方括号包裹表达式)来实现。

正确代码示例

let arrayToUpdate = 'array1'
let idToUpdate = 2
let user = 'user123'

// 动态构建查询条件
const query = {
  user: user,
  [`${arrayToUpdate}.id`]: idToUpdate
};

// 动态构建更新文档
const updateDocument = {
  $set: {
    [`${arrayToUpdate}.$.active`]: false // 这里用布尔值false,不是字符串"false"
  }
};

const result = await AutoUsersPositions.updateOne(query, updateDocument);

关键说明

  • 计算属性名允许你在对象字面量中使用表达式作为键,用[表达式]的形式,这里用模板字符串动态拼接数组路径。
  • 注意把"false"改成布尔值false,否则会把active字段设为字符串类型,不符合原本的字段类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 06:01:17