簡體   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