Om du vet att det aldrig finns dubbletter i arrayen kan du använda JSON_SEARCH för att hitta sökvägen till värdet du vill ta bort och använd sedan JSON_REMOVE för att ta bort den. Observera att du måste kontrollera att JSON_SEARCH hittar faktiskt ett värde, annars JSON_REMOVE kommer att annullera hela fältet:
UPDATE waitinglist
SET new = JSON_REMOVE(new, JSON_UNQUOTE(JSON_SEARCH(new, 'one', 'orange')))
WHERE JSON_SEARCH(new, 'one', 'orange') IS NOT NULL
Jag har gjort en liten demo på dbfiddle .
Observera att du måste använda JSON_UNQUOTE på svaret från JSON_SEARCH för att göra det till en giltig sökväg för JSON_REMOVE .