Vous devez utiliser l'opérateur $ pour mettre à jour un sous-document dans un tableau
Utiliser contacts.$
pointera mongoDB pour mettre à jour le sous-document pertinent.
db.users.update({_id: ObjectId("5500b5b8908520754a8c2420"),
"contacts._id": ObjectId("550199c6fe544adf50bc291e")},
{"$set":{"contacts.$":myNewDocument}})
Je ne sais pas pourquoi vous modifiez le _id
du sous-document. Ce n'est pas conseillé.
Si vous souhaitez modifier un champ particulier du sous-document, utilisez le contacts.$.<field_name>
pour mettre à jour le champ particulier du sous-document.