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

MongoDB Realm更新嵌套文档时如何使用动态变量作为键名

问题原因

你之前的写法没有生效是因为双引号包裹的字符串中,JS不会解析${}模板占位符,只会将其作为普通字符串处理,最终提交给MongoDB的更新路径是错误的。

正确实现方式

利用ES6的计算属性名语法,用方括号包裹动态生成的路径字符串即可:

const door_number = 7; // 点击获取的日历门编号
const date = new Date(); // 当前日期
const result = await PrivateUserData.updateOne(
  { id: myID },
  {
    $set: {
      [`codes.${door_number}.claimed_at`]: date
    }
  }
);

JS会先计算方括号内模板字符串的结果,生成codes.7.claimed_at这类符合要求的动态路径,再作为$set的键名传入更新语句。

注意事项
  • 注意数据库中实际存储的字段名是claimed_at,你之前的测试代码里写的date_claimed要和实际字段名保持一致,否则会新增无关字段。
  • 如果door_number是数字类型也无需额外转换,MongoDB的对象键默认是字符串格式,会自动适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:24:05