繁体   English   中英

如何更新 postgresql jsonb 字段内的数组?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM