2015-04-02 7 views
0

Я пытаюсь выяснить, как обновить поля, вложенные в дочерний объект в документе в mongodb, похоже, что это не так. Вот что у меня есть.Обновление вложенных объектов нескольких полей

Это объект. Я хочу, чтобы обновить описание полей, количество и утвержденных атрибуты

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

Я пробовал почти все с помощью $ множества, но большинство вещей будут перезаписывать все поля объекта сделки за обновленное исключением или установить на основной документ (за пределами транзакции).

У меня есть объект данных = {количество: 11, описание: «Новый DESC», утверждено: истинно}

как я могу использовать объект $ комплекта обновления для обновления этих полей и не уничтожая другие вложенным поля

ответ

1

использование dot notation:

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

не забудьте multi если вы хотите обновить много вещей.

+0

Нет ли другого способа сделать это? Я могу включить некоторые или все из этих атрибутов. – kschieck

+0

@kschieck Что не так с этим? Вы можете включить только один атрибут или столько, сколько вам нужно. Также вы можете обновлять поля не в поле транзакции. –

Смежные вопросы