Как я могу обновить json внутри list в postgresql?

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

от cloyd , в категории: SQL , 6 месяцев назад

Как я могу обновить json внутри list в postgresql?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

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

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

@cloyd 

В PostgreSQL можно обновить JSON, находящийся внутри массива, следующим образом:

  1. Используйте функцию jsonb_set для обновления JSON-объекта, находящегося внутри массива. jsonb_set создает новое значение JSON на основе указанных пути и значения.


Например, предположим, что у вас есть следующая таблица с полем "data" типа jsonb:

1
2
3
4
CREATE TABLE my_table (
  id SERIAL PRIMARY KEY,
  data JSONB
);


  1. Чтобы обновить JSON-объект внутри массива, используйте следующий запрос:
1
2
3
UPDATE my_table
SET data = jsonb_set(data, '{path_to_array, array_index}', '{"key": "new_value"}', TRUE)
WHERE id = your_id;


В этом запросе:

  • path_to_array - путь к массиву, содержащему JSON-объект, который вы хотите обновить.
  • array_index - индекс элемента в массиве, содержащего JSON-объект.
  • {"key": "new_value"} - новое значение JSON-объекта.
  1. Замените "your_id" на фактический идентификатор записи, которую вы хотите обновить.


Примечание: в этом примере использован тип данных jsonb, но вы также можете использовать тип json. Оба типа поддерживают функцию jsonb_set, однако jsonb предоставляет более эффективную работу с данными JSON.