Applica il $set
operatore insieme al $
posizionale nel tuo aggiornamento per cambiare il name
campo.
Il $
l'operatore posizionale identificherà l'elemento corretto nell'array da aggiornare senza specificare esplicitamente la posizione dell'elemento nell'array, quindi l'istruzione di aggiornamento finale dovrebbe essere simile a:
db.collection.update(
{ "friends.u.username": "michael" },
{ "$set": { "friends.$.u.name": "hello" } }
)