追加到Postgres json数组(不是jsonb)

cuxqih21  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(146)

我正在尝试postgres中对json(和jsonb)的支持,目前困扰我的问题是如何追加到json数组中--我可以用jsonb来完成,但无法确定是否可以开箱即用。
在jsonb:

CREATE TABLE OrderData (
    uuid text NOT NULL PRIMARY KEY UNIQUE,
    info jsonb NOT NULL
);

INSERT INTO orderdata
VALUES('abcd','[{"items": {"product": "Jelly","qty": 1});

UPDATE orderdata SET info = info || '{"items": {"product": "Grape","qty": 10}}'::jsonb WHERE uuid LIKE 'abcd';

上面的代码运行良好,我可以执行SELECT * FROM orderdata;来查看更新。
当我对json做同样的事情时-我可以让它开始:

CREATE TABLE OrderData (
    uuid text NOT NULL PRIMARY KEY UNIQUE,
    info json NOT NULL
);

INSERT INTO orderdata
VALUES('abcd','{"items": {"product": "Jelly","qty": 1}}'));

但是我不能使用||操作符,因为它在json上不起作用(只在jsonb上)。

mwecs4sa

mwecs4sa1#

由于您坚持使用json,因此每次要执行一些有用的操作时,都必须将列强制转换为jsonb

UPDATE orderdata
   SET info = info::jsonb || '{"items": {"product": "Grape","qty": 10}}'
WHERE uuid = 'abcd'

Postgres会自动将=右侧表达式的结果转换回赋值语句中的JSON。

相关问题