значением
UPDATE users_info SET bundle = bundle || jsonb_build_object('1', (bundle->'1') || '2') WHERE user_id = 12345
{"1": []}
Так? https://pastebin.com/TrBAjNmb
Гораздо лучшэ. (Выполнял пока оно было скопипащено, надеюсь, на pastebin тожэ самое). Но теперь непонятно, что вам в этом не нравится. Всё вроде выполнилось, всё достаточно логично.
я тут немного обновил, чтоб было более ясно: https://pastebin.com/VvyfyTMJ Мне не нравится, что удаляется "2" - строка, а не 2 - цифра
Точнее, похожэ, у вас не получается удалить цыфру 2?
да, не получается🥲
Ну, в операторе '-' прямо сказано, что из массива удаляются только строки. Так что -- переводить, допустим, в таблицу (json_array_elements0 и удалять как из таблицы. Или jsonpath написать.
SELECT jsonb_path_query_array( '[2, 3, "3", "4"]'::jsonb, '$[*] ? ((@ != 2) || ( (@ != 2) is unknown))'); (Вся хрень начиная с двух пайпов -- на случай, если там есть не-числа в массиве и их надо оставить).
Спасибо большое, очень выручил! Увековечу Вас в коде А про оператор, я действительно не догадался прочитать(
Обсуждают сегодня