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

TypeScript中Mongoose如何将函数参数作为MongoDB更新属性

解决方案

在JavaScript/TypeScript中,用变量作为对象键名时,不能直接在静态字符串里引用变量,必须通过方括号语法动态生成键名。针对你的场景,需要分别构造查询条件和更新操作的动态键:

代码实现

function updateMyDatabase(round_id: number) {
  const resp = await seasonFixturesModel.updateOne(
    { 
      season_id: season_id,
      // 用方括号包裹模板字符串,动态生成查询键
      [`fixtures.${round_id}.id`]: 18535224
    },
    { 
      $set: {
        // 同样用方括号+模板字符串生成更新键
        [`fixtures.${round_id}.$`]: {}
      }
    }
  );
}

原理说明

  • 你之前尝试的"fixtures.round_id.id"这类写法,MongoDB会把round_id当成字面量字符串去匹配字段,而非变量的实际值
  • 模板字符串${round_id}能正确插入变量值,但必须放在方括号[]内,才能被解析为对象的动态键名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 21:10:36