Bạn đang chuyển toàn bộ services (bao gồm tất cả các trường khác) thành $set và kết quả là bạn đang đặt lại tất cả các trường được lồng vào bên trong services . Thử chỉ chuyển dữ liệu bạn muốn cập nhật / thêm vào tài liệu của mình bằng cách sử dụng ký hiệu dấu chấm.
$ set tài liệu
nói
db.users.update({"name":"Fabien Rousseau"},{ $set: { "services.cas" : { "external_id" : "fabien.rousseau", "version" : 2 }}})