Vous pouvez faire tout cela avec une seule update appeler le modèle au lieu de le récupérer d'abord avec findOne :
User.update(
{'addresses._id': address_id},
{$set: {'addresses.$.street': 'Blah'}},
function(err, count) { ... });
Cela utilise le positionnel $ opérateur
dans le $set pour cibler uniquement les addresses élément correspondant à la requête.