Appliquer le $set
opérateur avec le $
opérateur positionnel dans votre mise à jour pour changer le name
domaine.
Le $
l'opérateur positionnel identifiera l'élément correct dans le tableau à mettre à jour sans spécifier explicitement la position de l'élément dans le tableau, ainsi votre instruction de mise à jour finale devrait ressembler à :
db.collection.update(
{ "friends.u.username": "michael" },
{ "$set": { "friends.$.u.name": "hello" } }
)