将值添加到jsonb现有密钥并更新其他postgres

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

如何为jsonb键添加值?例子`

{"drivers": "15","updatedat":"someDate"}

必须在upd之后

{"drivers":"15,...,26","updatedat":"nowTime"}

从节点插入updatedat,所以没有问题,我可以选择节点中的派生值,添加新的和更新,还有其他方法使用1个查询而不使用节点吗?

sql json postgresql
1个回答
0
投票

如果我正确理解你的任务,你只需要jsonb_set

t=# select jsonb_set('{"drivers": "15","updatedat":"someDate"}'::jsonb, '{updatedate}'::text[],to_jsonb(now()));
                                          jsonb_set
----------------------------------------------------------------------------------------------
 {"drivers": "15", "updatedat": "someDate", "updatedate": "2018-05-29T15:49:41.772188+00:00"}
(1 row)

除非你有旧版本的课程...

更新以更改驱动程序值:

t=# with c(j) as (values('{"drivers": "15","updatedat":"someDate"}'::jsonb))
select jsonb_set(j,'{drivers}'::text[],to_jsonb(j->>'drivers'||',...,26')) from c;
                     jsonb_set
---------------------------------------------------
 {"drivers": "15,...,26", "updatedat": "someDate"}
(1 row)
© www.soinside.com 2019 - 2024. All rights reserved.