2015-04-02 63 views
0

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

这是一个对象。我想更新的字段名称,数量及批准属性

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

我使用$组试图几乎一切,但大部分事情会覆盖在交易对象的所有字段除了更新那些或设置到主要文件(外部交易)。

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

我如何可以使用$集更新对象更新这些字段,而不是摧毁其他嵌套田

回答

1

使用dot notation

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

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

+0

有没有其他方式做到这一点?我可能包含部分或全部这些属性。 – kschieck 2015-04-02 20:42:22

+0

@kschieck这种方式有什么问题?您只能包含一个属性,或者只包含一个属性。您也可以更新不在交易字段中的字段。 – 2015-04-02 20:44:02