postgresql SQL更新嵌套Json对象的位置

pvabu6sv  于 2023-11-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(113)

我正在尝试编写一个更新查询,更新任何拥有名为“Mark”的狗的用户,表中有一个名为“additional_options”的列,它是一个看起来像这样的Json blob

{
'dog_name': 'Mark'
}

字符串
现在我有

update "Employees" e set country = "BR" where json_extract_path(e.additional_options, "dog_name") = "Mark"


我正在使用这个postgres函数找到here来构建这个,但现在我得到一个错误

column "dog_name" does not exist


谁能帮我弄清楚为什么这不管用
编辑:如果有帮助的话,我用Prisma写了这个查询,它很有效

export const moveToBrazil = async(): Promise<Employee[]> => {
    await db.employees.updateMany({
        where: {
            additional_options: {
                path: ['dog_name'],
                equals: 'Ellie'
            }
        },
        data: {
            country: "BR"
        }
    });
    return db.employees.findMany({
        where: {
            additional_options: {
                path: ['dog_name'],
                equals: 'Ellie'
            }
        },
    });
}

8aqjt8rx

8aqjt8rx1#

您可以使用->>操作符来获取json对象字段作为文本。类似于:

UPDATE "Employees" e SET country = 'BR' WHERE e.additional_options->>'dog_name' = 'Mark';

字符串
->>运算符获取JSON对象字段 * 作为文本 *。如果additional_optionsjsonb列,dog_name是该JSON中的键,则additional_options->>'dog_name'获取dog_name的值作为文本。

REFERENCE

相关问题