- PVSM.RU - https://www.pvsm.ru -
Как сообщает telegram-канал Cross Join [1], в репозиторий Postgres упал комит [2], упрощающий работу с jsonb. Теперь можно обращаться к частям jsonb с помощью квадратных скобок, причем это работает как на чтение, так и на запись.
Прощай jsonb_set и прочие костыли типа data = data - 'a' || '{"a":5}'
Обновляем значение объекта по ключу. 25 здесь является числом, но взято в кавычки, потому что присваиваемое значение должно быть jsonb
-- (person_data имеет тип jsonb)
UPDATE users
SET person_data['age'] = '25';
Обновление работает и с пустыми (null) jsonb.
Фильтруем таблицу по полю name=Pasha. Pasha — строка, но тоже записана в форме jsonb: '"Pasha"', поэтому лишние двойные кавычки
SELECT *
FROM users
WHERE person_data['name'] = '"Pasha"';
Получаем значение объекта по ключу "age"
SELECT ('{"age": 25}'::jsonb)['age'];
Или можно указать длинный путь
SELECT ('{"a": {"b": {"c": 1}}}'::jsonb)['a']['b']['c'];
Элемент массива по индексу
SELECT ('[1, "2", null]'::jsonb)[1];
Ну и самое главное: изменения войдут в postgreSQL 14!
Оригинальная идея синтаксиса принадлежит Олегу Бартунову, реализация — Дмитрий Долгов
Автор: Антон Околелов
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/361207
Ссылки в тексте:
[1] Cross Join: https://t.me/crossjoin
[2] комит: https://github.com/postgres/postgres/commit/676887a3b0b8e3c0348ac3f82ab0d16e9a24bd43
[3] Источник: https://habr.com/ru/post/540428/?utm_source=habrahabr&utm_medium=rss&utm_campaign=540428
Нажмите здесь для печати.