Database

[{"_id":"1","users":[{"_id":"id1","name":"name1"},{"_id":"id2","name":"name2"},{"_id":"id3","name":"name3"}]}]

Query

db.collection.update({"_id":{"$eq":"1"}},[{"$addFields":{"yourarray":[{"_id":"id1","name":"newName1"},{"_id":"id2","name":"newName2","family":"newFamily2"},{"_id":"id4","name":"newName4"}]}},{"$addFields":{"new-ids":{"$setDifference":[{"$map":{"input":"$yourarray","as":"u","in":"$$u._id"}},{"$map":{"input":"$users","as":"u","in":"$$u._id"}}]}}},{"$addFields":{"users":{"$concatArrays":[{"$map":{"input":"$users","as":"user","in":{"$reduce":{"input":"$yourarray","initialValue":"$$user","in":{"$let":{"vars":{"old_user":"$$value","new_user":"$$this"},"in":{"$cond":[{"$eq":["$$old_user._id","$$new_user._id"]},{"$mergeObjects":["$$old_user","$$new_user"]},"$$old_user"]}}}}}}},{"$filter":{"input":"$yourarray","as":"u","cond":{"$in":["$$u._id","$new-ids"]}}}]}}},{"$unset":["yourarray","new-ids"]}])

Result