[英]How to update array inside postgresql jsonb field?
我有一个带有 jsonb 字段的表,一个值示例:
{
"id": "test",
"data": [
{
"folder1": ["id1", "id2", "id3"]
}
]
}
我想将数据中的数组 ["id1", "id2", "id3"] 替换为 [{"id": "id1", "size": 10}, {"id": "id2", "大小": 100}, {"id": "id3", "size": 1000}]:
{
"id": "test",
"data": [
{
"folder1": [
{"id": "id1", "size": 10},
{"id": "id2", "size": 100},
{"id": "id3", "size": 1000}
]
}
]
}
如果可以在单个 sql 结构中更新它,我需要用 pl/sql 来做吗?
如果要替换的元素的路径是固定的,则可以使用jsonb_set()
:
jsonb_set(
mycol,
'{data,0,folder1}',
'[{"id": "id1", "size": 10}, {"id": "id2", "size": 100}, {"id": "id3", "size": 1000}]'::jsonb
)
DB Fiddle 上的演示- 使用jsonb_pretty()
进行格式化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.