2011-10-01 13 views
9

Digamos que tengo el siguiente documento:

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

y me gustaría fusionarse con la nestedDoc un nuevo objeto:

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

lo tanto, el objeto resultante sería:

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

¿Cómo puedo hacer esto en una sola consulta? Siento que necesito varias llamadas $ set, pero los nombres de las propiedades del objeto deben ser únicos. En otras palabras, me gustaría poder hacer lo siguiente:

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

Algunos detalles adicionales es que la versión 1.8.2 es mongodb y estoy usando el controlador de nodo nativo nodejs.

Respuesta

21

puede actualizar mediante el uso de lo siguiente:

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

Aquí hay más información sobre el comando de actualización: http://www.mongodb.org/display/DOCS/Updating#Updating

+0

Ah, no pensó en los caminos de propiedad citados - gracias! – Zugwalt

Cuestiones relacionadas