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
相关产品推荐
相关产品推荐

