【问题标题】:Update nested object multiple fields更新嵌套对象多个字段
【发布时间】:2015-04-03 04:39:49
【问题描述】:

我试图弄清楚如何更新嵌套在 mongodb 文档中的子对象中的字段,似乎没有办法做到这一点。这就是我所拥有的。

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

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

我已经尝试了几乎所有使用 $set 的方法,但大多数东西都会覆盖事务对象中的所有字段,除了更新的字段或设置到主文档(外部事务)上。

我有一个对象 数据={数量:11,描述:“新描述”,批准:真}

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

【问题讨论】:

    标签: javascript node.js mongodb


    【解决方案1】:

    使用dot notation:

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

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

    【讨论】:

    • 就没有别的办法了吗?我可能会包含部分或全部这些属性。
    • @kschieck 这种方式有什么问题?您可以只包含一个属性,也可以包含任意多个属性。您也可以更新不在交易字段中的字段。
    猜你喜欢
    • 2019-02-13
    • 2019-04-24
    • 2021-04-14
    • 1970-01-01
    • 1970-01-01
    • 2023-01-27
    • 2019-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多