[英]Postgres 9.5 update inner json field
我有一個json列。 該對象具有嵌套字段,例如
{
"logo": {
"url": "https://foo.bar"
...
}
...
}
該對象具有更多字段,但是url
字段是我要更新的字段。 我相信我應該使用json_set之類的東西,但是我對json路徑迷失了。 我可以舉個例子嗎?
您不能僅使用jsonb
使用json
來做到這jsonb
(但是您可以輕松地轉換現有值)
使用jsonb_set
您需要提供要更改的對象的路徑,因此應為'{logo,url}'
:
下列:
with t (data) as (
values
('{
"logo": { "url": "https://foo.bar", "something" : "some value"},
"other" : { "one": "two"}
}'::jsonb
)
)
select jsonb_set(data, '{logo,url}', to_jsonb('http://bar.foo'::text))
from t;
( WITH
部分僅用於生成偽數據)
收益:
jsonb_set
---------------------------------------------------------------------------------------
{"logo": {"url": "http://bar.foo", "something": "some value"}, "other": {"one": "two"}}
如您所見,僅url
屬性被替換,其他所有內容保持原樣。
如果您的專欄確實是json,請使用your_column::jsonb
以便可以使用jsonb_set()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.