You have right query only issue is you are using string vs number (remove quotes). In JSON type is attached to value.
(i.e. 1 is different from “1”, no implicit casting)
UPDATE `magic-players`
SET avatar.hero_upgrade = ARRAY v FOR v IN hero_upgrade WHEN v.id != 28000007 END
WHERE jsonType = "data" AND
ANY v IN avatar.hero_upgrade SATISFIES v.id = 28000007 END;