Du måste använda operatorn $ för att uppdatera ett underdokument i en array
Använder contacts.$
pekar mongoDB för att uppdatera det relevanta underdokumentet.
db.users.update({_id: ObjectId("5500b5b8908520754a8c2420"),
"contacts._id": ObjectId("550199c6fe544adf50bc291e")},
{"$set":{"contacts.$":myNewDocument}})
Jag är inte säker på varför du ändrar _id
av underdokumentet. Det är inte tillrådligt.
Om du vill ändra ett visst fält i underdokumentet använd contacts.$.<field_name>
för att uppdatera det specifika fältet i underdokumentet.