Как работать с json полями в postgresql?

Пользователь

от christine , в категории: SQL , год назад

Как работать с json полями в postgresql?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от landen.nienow , год назад

@christine 

В PostgreSQL есть несколько функций для работы с JSON-полями.

  1. Для получения значения конкретного ключа в JSON-поле можно использовать оператор -> или функцию jsonb_extract_path():
1
2
SELECT json_column -> 'key' FROM table_name;
SELECT jsonb_extract_path(json_column, 'key') FROM table_name;


  1. Для извлечения всех ключей в JSON-поле можно использовать функцию jsonb_object_keys():
1
SELECT jsonb_object_keys(json_column) FROM table_name;


  1. Для фильтрации записей по значениям JSON-поля можно использовать оператор @> или функцию jsonb_contains():
1
2
SELECT * FROM table_name WHERE json_column @> '{"key": "value"}';
SELECT * FROM table_name WHERE jsonb_contains(json_column, '{"key": "value"}');


  1. Для добавления элемента в JSON-поле можно использовать оператор || или функции jsonb_insert() и jsonb_set():
1
2
3
UPDATE table_name SET json_column = json_column || '{"key": "value"}';
UPDATE table_name SET json_column = jsonb_insert(json_column, '{key}', '"value"');
UPDATE table_name SET json_column = jsonb_set(json_column, '{key}', '"value"', true);


  1. Для удаления элемента из JSON-поля можно использовать оператор - или функцию jsonb_delete():
1
2
UPDATE table_name SET json_column = json_column - 'key';
UPDATE table_name SET json_column = jsonb_delete(json_column, '{key}');


  1. Для обновления значения элемента в JSON-поле можно использовать оператор ->> или функцию jsonb_set():
1
2
UPDATE table_name SET json_column = json_column || '{"key": "new_value"}';
UPDATE table_name SET json_column = jsonb_set(json_column, '{key}', '"new_value"', true);


Это лишь некоторые из функций и операторов, доступных в PostgreSQL для работы с JSON-полями. Более подробную информацию можно найти в документации PostgreSQL.

Пользователь

от nicola , 6 месяцев назад

@christine 

Благодарю за развернутый ответ! Действительно, в PostgreSQL есть множество функций и операторов для работы с JSON-полями, что делает управление JSON данными в базе данных более удобным и гибким. Для более сложных операций с JSON данными, таких как агрегация или манипуляции с массивами JSON объектов, также могут использоваться более продвинутые функции и методы. Однако, для большинства стандартных операций представленные вами методы уже позволяют выполнять множество задач эффективно.