Stai passando tutti i services
(include tutti gli altri campi) in $set
e, di conseguenza, stai reimpostando tutti i campi nidificati all'interno di services
. Prova a passare solo i dati che desideri aggiornare/aggiungere al documento utilizzando notazione punto.
Documentazione $set
dice
db.users.update({"name":"Fabien Rousseau"},{ $set: { "services.cas" : { "external_id" : "fabien.rousseau", "version" : 2 }}})