In postgresql 9.5, is there a way to rename an attribute in a jsonb field?
For example:
{ \"nme\" : \"test\" }
should be renamed t
I used the following for handling nested attributes and skipping any json that doesn't use the old name:
UPDATE table_name
SET json_field_name = jsonb_set(json_field_name #- '{path,to,old_name}',
'{path,to,new_name}',
json_field_name#>'{path,to,old_name}')
WHERE json_field_name#>'{path,to}' ? 'old_name';
just for reference docs:
#- Delete the field or element with specified path (for JSON arrays, negative integers count from the end)
https://www.postgresql.org/docs/current/functions-json.html#FUNCTIONS-JSONB-OP-TABLE
#>Get JSON object at the specified path https://www.postgresql.org/docs/current/functions-json.html#FUNCTIONS-JSON-OP-TABLE