根据字符串值更新jsonb字段

问题描述 投票:0回答:1

我在“文件”表中有一个 jsonb 字段“格式”,如下所示:

{
    "small": {
        "ext": ".jpg",
        "url": "https://my-digital-ocean-storage-1.fra1.digitaloceanspaces.com/strapi/d30cfee509a8748029f41a690e52ea3c.jpg",
        "hash": "d30cfee509a8748029f41a690e52ea3c",
        "mime": "image/jpeg",
        "name": "small_nowe_1.jpg",
        "path": null,
        "size": 50.15,
        "width": 500,
        "height": 500
    },
    "thumbnail": {
        "ext": ".jpg",
        "url": "https://my-digital-ocean-storage-1.fra1.digitaloceanspaces.com/strapi/0b2bb902b3da82b1254dfbe873a650c8.jpg",
        "hash": "0b2bb902b3da82b1254dfbe873a650c8",
        "mime": "image/jpeg",
        "name": "thumbnail_nowe_1.jpg",
        "path": null,
        "size": 7.28,
        "width": 156,
        "height": 156
    }
}

我想要的是我想更新这个 jsonb 字段并更改“url”,例如从

"https://my-digital-ocean-storage-1.fra1.digitaloceanspaces.com/strapi/d30cfee509a8748029f41a690e52ea3c.jpg"
更改为
"https://my-digital-ocean-storage-2.fra1.cdn.digitaloceanspaces.com/strapi/d30cfee509a8748029f41a690e52ea3c.jpg"

postgresql jsonb
1个回答
0
投票

您可以使用 jsonb-function jsonb_set() 为此:

UPDATE files
SET formats = jsonb_set(formats
    , '{small,url}' -- path
    , '"https://my-digital-ocean-storage-2.fra1.cdn.digitaloceanspaces.com/strapi/d30cfee509a8748029f41a690e52ea3c.jpg"' -- new content
    )
WHERE id = 123;
© www.soinside.com 2019 - 2024. All rights reserved.