Как обновить массив внутри json в postgres
Комманда
update table set columnWithJSON = jsonb_set(columnWithJSON, '{fieldInThisJSON}', 'newValueForThisField') where id='someId';
Обновит поле со сторокой.
А как обновить поле содержащее массив строк?
Если JSON такой: {"array": ["someString1", "someString2"], "name": "SomeName", "id": "someID"}
Как легко и непринужденно обновить поле array без распаковки всего json. Может есть пример использования функций типа jsonb_set только для массива? При этом на вход подавать просто новый массив
UPD: В результате предполагается такой JSON: {"array": ["newString1", "newString2"], "name": "SomeName", "id": "someID"}
Есть ли вообще фукнция типа
jsonb_somefunc(someJSONColumn, '{fieldWithArray}', '[newString1 newString2]')
Или что то типа того
Которя сделает желаемый json.
Ответы (2 шт):
jsonb_set вторым параметром принимает путь к необходимому ключу внутри структуры json, пример можете посмотреть в данном ответе: https://stackoverflow.com/questions/18209625/how-do-i-modify-fields-inside-the-new-postgresql-json-datatype
Официальная документация: https://www.postgresql.org/docs/current/functions-json.html
update table set json_column=json_column || {"somefield":"somevalue"};
Обновляет только те поля в json столбце postgres, которые указаны в json этой команды