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

如何用Mongoose+TypeScript为MongoDB嵌套对象追加属性而非替换?

给MongoDB嵌套对象追加新属性

你需要用点符号指定嵌套对象中的具体属性,这样$set只会更新目标属性,不会替换整个ck_details对象。

错误写法会直接覆盖ck_details:

TenantModel.updateOne({ tenant_id: 'tenantId' }, { $set: { ck_details: { appId } } })

正确写法,通过ck_details.appId定位到嵌套属性:

TenantModel.updateOne(
  { tenant_id: 'tenantId' },
  { $set: { 'ck_details.appId': appId } }
)

执行后,原文档的ck_details会保留leadId和refNum,同时新增appId属性,最终结构如下:

{
  _id: ObjectId('XXX'),
  tenant_id: 'tenantId',
  ck_details: {
    leadId: '',
    refNum: '',
    appId: '你的appId值'
  }
}

如果目标文档不存在,想要自动创建的话,可以加上upsert: true选项:

TenantModel.updateOne(
  { tenant_id: 'tenantId' },
  { $set: { 'ck_details.appId': appId } },
  { upsert: true }
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 23:09:53