Database

[{_id:123,subColl:[{name:"John",value:10,other:20}]}]

Query

db.collection.update({_id:123},[{$set:{subColl:{$cond:[{$in:["John","$subColl.name"]},{$map:{input:"$subColl",in:{$cond:[{$eq:["$$this.name","John"]},{$mergeObjects:["$$this",{name:"John",other:1000}]},"$$this"]}}},{$concatArrays:["$subColl",[{name:"John",other:1000}]]}]}}}])

Result