2011-11-07 20 views
6

Tengo el siguiente documento:MongoDB: cómo actualizar documentos embebidos en matriz

{_id: '4eb79ee1e60fc603788e7259', 
Name: 'name', 
Subsidiaries: [ 
    { _id: '4eb79eeae60fc603788e7271', 
    Location: 'location1'}, 
    { _id: 'subid2', 
    Location: 'location2'}, 
]} 

que desee actualizar la ubicación del filial:

db.Departments.update({ "_id" : ObjectId("4eb79ee1e60fc603788e7259"), "Subsidiaries._id" : ObjectId("4eb79eeae60fc603788e7271") }, { "$set" : { "Subsidiaries.Location" : "City" } }) 

Pero mongodb devuelve un error: "no puede anexar de matriz utilizando el nombre del campo string [Localización]"

Respuesta

15

Usted tiene que usar $ poistional operator para actualizar los documentos incrustados,

db.Departments.update(
    { "_id" : ObjectId("4eb79ee1e60fc603788e7259"), 
     "Subsidiaries._id" : ObjectId("4eb79eeae60fc603788e7271") }, 
    { "$set" : { "Subsidiaries.$.Location" : "City" } } 
) 
+4

en mi caso, esto dice, ** no se puede agregar a la matriz usando el nombre de campo de cadena [$] ** , aunque puedo ver que el documento anterior y mi documento son exactamente los mismos. –

Cuestiones relacionadas