Database

[{"_id":"accountId 1","codes":[{"key":"advantageCode 1","dateBegin":"01/02/2012","dateEnd":"01/02/2013"},{"key":"advantageCode 2","dateBegin":"01/02/2012","dateEnd":"01/02/2013"}]}]

Query

db.collection.update({"_id":"accountId 2"},[{$set:{codes:{"$cond":[{$ne:[{$type:"$codes"},"missing"]},{$cond:[{$in:["advantageCode 3","$codes.key"]},{$map:{input:"$codes",in:{$mergeObjects:["$$this",{}]}}},{$concatArrays:["$codes",[{"key":"advantageCode 3","dateBegin":"01/02/2022","dateEnd":"01/02/2023"}]]}]},{"key":"advantageCode 3","dateBegin":"01/02/2022","dateEnd":"01/02/2023"}]}}}],{upsert:true})

Result