MongoDB: actualiza un objeto en una matriz anidada

{ "_id" : "xPBc4By8FemDwTPqH", "u" : { "_id" : "6PoZawHZcQz4Gwzcv", "username" : "michael" }, "friends" : [ { "u" : { "_id" : "eGqDjAjjtYADbuSnn", "username" : "michael", "name" : "michael" } }, { "u" : { "_id" : "k4gKCGwYryXDMMHvs", "username" : "joyce", "name" : "joyce" } } ] } 

Quiero actualizar el nombre de “friends.u.nombredeusuario”: el nombre de “michael” es “hola”, cómo debo hacerlo.

Aplique el operador $set junto con el operador $ posicional en su actualización para cambiar el campo de name .

El operador posicional $ identificará el elemento correcto en la matriz para actualizar sin especificar explícitamente la posición del elemento en la matriz, por lo tanto, su statement de actualización final debería verse así:

 db.collection.update( { "friends.u.username": "michael" }, { "$set": { "friends.$.u.name": "hello" } } ) 

Puede usar el operador $ set.

 > db.test.update({"friends.u._id":"eGqDjAjjtYADbuSnn"},{$set:{"friends.$.u.name":"hello"}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) 
    Intereting Posts