Database

[{_id:11,marksObtained:[{physics:10},{chemistry:12},{maths:11},{biology:9},{social:9}],name:"Someone"}]

Query

db.collection.update({_id:11},[{$set:{marksObtained:{$map:{input:"$marksObtained",in:{$first:{$objectToArray:"$$this"}}}},dataToUpdate:{$map:{input:[{chemistry:13},{zoology:12}],in:{$first:{$objectToArray:"$$this"}}}}}},{$set:{updateData:{$filter:{input:"$dataToUpdate",cond:{$in:["$$this.k","$marksObtained.k"]}}},newData:{$filter:{input:"$dataToUpdate",cond:{$not:{$in:["$$this.k","$marksObtained.k"]}}}},dataToUpdate:"$$REMOVE"}},{$set:{marksObtained:{"$concatArrays":[{$map:{input:"$marksObtained",in:{$cond:[{$in:["$$this.k","$updateData.k"]},{$arrayElemAt:["$updateData",{$indexOfArray:["$updateData.k","$$this.k"]}]},"$$this"]}}},"$newData"]},newData:"$$REMOVE",updateData:"$$REMOVE"}},{$set:{marksObtained:{$map:{input:"$marksObtained",in:["$$this"]}}}},{$set:{marksObtained:{$map:{input:"$marksObtained",in:{"$arrayToObject":"$$this"}}}}}])

Result