Как стать автором
Обновить

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

Время на прочтение1 мин
Количество просмотров9.9K

Как сообщает 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!


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

Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
Всего голосов 53: ↑53 и ↓0+53
Комментарии28

Публикации

Истории

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
19 сентября
CDI Conf 2024
Москва
20 – 22 сентября
BCI Hack Moscow
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн