2011-10-01 10 views
9

Powiedzmy mam następujący dokument:

{name: 'myDoc', nestedDoc: {a: 1, b: 2, c: 3}} 

I chciałbym połączyć z nestedDoc nowy obiekt:

{b: 20, c:30, d:40} 

Tak powstały obiekt będzie:

{name: 'myDoc', nestedDoc: {a: 1, b: 20, c: 30, d: 40}} 

Jak mogę zrobić to w jednym zapytaniu? Czuję, że potrzebuję wielu zestawów $ set, jednak nazwy właściwości obiektów muszą być unikalne. Innymi słowy, chciałbym móc wykonać następujące czynności:

db.myCollection.update({name: 'myDoc', nestedDoc: {$set: {b: 20}, $set: {c: 30}, $set: {d: 40}}); 

Niektóre dodatkowe szczegóły jest to, że wersja 1.8.2 jest MongoDB i używam nodejs sterownika węzła-rodzimy.

Odpowiedz

21

można zaktualizować za pomocą następujących czynności:

db.myCollection.update({ 
    name: 'mydoc' 
}, { 
    $set: { 
     'nestedDoc.b': 20, 
     'nestedDoc.c': 30, 
     'nestedDoc.d': 40 
    } 
}) 

Oto więcej informacji na temat komendy UPDATE: http://www.mongodb.org/display/DOCS/Updating#Updating

+0

Ach, nie myśleć o cytowanych ścieżek własności - dzięki! – Zugwalt

Powiązane problemy