Předáváte celé services
(zahrnuje všechna ostatní pole) na $set
, a v důsledku toho resetujete všechna pole vnořená do services
. Zkuste do dokumentu předat pouze data, která chcete aktualizovat/přidat, pomocí tečkovaný zápis.
dokumentace $set
říká
db.users.update({"name":"Fabien Rousseau"},{ $set: { "services.cas" : { "external_id" : "fabien.rousseau", "version" : 2 }}})