更新嵌套对象的多个字段

Update nested object multiple fields

本文关键字:字段 嵌套 对象 更新      更新时间:2023-09-26

我正在想办法更新mongodb中文档中子对象中嵌套的字段,但似乎没有办法。

这是一个对象。我想更新字段描述、金额和批准的属性

{
    "_id": "...",
    "transaction": {
        "amount": 1,
        "description": "Birthday Money",
        "approved": false,
        "child_id": "...",
        "user_id": "...",
        "_id": "..."
    }
}

我几乎尝试过使用$set的所有操作,但大多数操作都会覆盖事务对象中的所有字段,除了更新的字段或设置在主文档上(事务外)。

我有个对象data={amount:11,description:"new desc",approved:true}

如何使用$set更新对象来更新这些字段,而不破坏其他嵌套字段

使用点表示法:

db.test.update(
  {_id: '...'},
  {$set: {
    'transaction.amount' : 44,
    'transaction.approved' : true,
    'transaction.description': 'new stuff'
  }}
)

如果你想更新很多东西,不要忘记multi