2011-10-01 11 views
9

Diciamo che ho il seguente documento:

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

E vorrei fondersi con la nestedDoc un nuovo oggetto:

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

Così l'oggetto risultante sarebbe:

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

Come posso fare questo in una singola query? Mi sembra di aver bisogno di più $ set call, tuttavia i nomi delle proprietà degli oggetti devono essere univoci. In altre parole, vorrei poter effettuare le seguenti operazioni:

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

alcuni dettagli in più è che la versione 1.8.2 è MongoDB e sto usando il driver nativo nodo nodejs.

risposta

21

È possibile aggiornare utilizzando il seguente:

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

Ecco ulteriori informazioni sul comando di aggiornamento: http://www.mongodb.org/display/DOCS/Updating#Updating

+0

Ah, non pensare a percorsi di proprietà citate - grazie! – Zugwalt

Problemi correlati