Przekazujesz całe services
(obejmuje wszystkie inne pola) do $set
, w wyniku czego resetujesz wszystkie pola zagnieżdżone w services
. Spróbuj przekazać do dokumentu tylko te dane, które chcesz zaktualizować/dodać za pomocą notacja z kropkami.
Dokumentacja $set
mówi
db.users.update({"name":"Fabien Rousseau"},{ $set: { "services.cas" : { "external_id" : "fabien.rousseau", "version" : 2 }}})