Упрощенный синтаксис для jsonb в PostgreSQL 14

в 19:02, , рубрики: jsonb, postgresql, sql, Программирование, Разработка веб-сайтов

Как сообщает telegram-канал Cross Join, в репозиторий Postgres упал комит, упрощающий работу с 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!

Оригинальная идея синтаксиса принадлежит Олегу Бартунову, реализация — Дмитрий Долгов

Автор: Антон Околелов

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js