Lo scriveresti in C# in questo modo:
var newAddress = new BsonDocument
{
{ "street", "New street" },
{ "city", "New York" },
{ "country", "USA" }
// ...
};
var query = Query.EQ("addresses.city", "New York");
var update = Update.Set("addresses.$", newAddress);
var result = customerCollection.Update(query, update, UpdateFlags.Multi);
Sembra un aggiornamento pericoloso da fare; stai sovrascrivendo un indirizzo basato solo sulla corrispondenza della città? La query funziona correttamente nella shell mongo?