Postgresql 如何将值推入jsonb列中的键[]?

Postgresql 如何将值推入jsonb列中的键[]?,postgresql,jsonb,Postgresql,Jsonb,我在Postgres表中有这样的jsonb结构:{“res”:[123223]},我想将值推送到res-数组中。我不知道数组上有多少个值,因为jsonb_insert在位置上运行,所以我尝试了-1位置: select jsonb_insert( '{"res": [123, 223]}', '{res,-1}', '333'); jsonb_insert -------------------------- {"res": [

我在Postgres表中有这样的
jsonb
结构:
{“res”:[123223]}
,我想将值推送到
res
-数组中。我不知道数组上有多少个值,因为
jsonb_insert
在位置上运行,所以我尝试了
-1
位置:

select jsonb_insert( '{"res": [123, 223]}', '{res,-1}', '333');
       jsonb_insert       
--------------------------
 {"res": [123, 333, 223]}
select jsonb_insert( '{"res": [123, 223]}', '{res,1000000}', '333');
       jsonb_insert       
--------------------------
 {"res": [123, 223, 333]}
SELECT jsonb_insert( '{"res": [123, 456, 789, 101112]}', '{res, -1}', '333', false);

+-------------------------------------+
|jsonb_insert                         |
+-------------------------------------+
|{"res": [123, 456, 789, 333, 101112]}|
+-------------------------------------+
它不起作用。如何将新值推送到数组末尾


我正在使用Postgres 9.6

一个可能的解决方案是使用可笑的大位置:

select jsonb_insert( '{"res": [123, 223]}', '{res,-1}', '333');
       jsonb_insert       
--------------------------
 {"res": [123, 333, 223]}
select jsonb_insert( '{"res": [123, 223]}', '{res,1000000}', '333');
       jsonb_insert       
--------------------------
 {"res": [123, 223, 333]}
SELECT jsonb_insert( '{"res": [123, 456, 789, 101112]}', '{res, -1}', '333', false);

+-------------------------------------+
|jsonb_insert                         |
+-------------------------------------+
|{"res": [123, 456, 789, 333, 101112]}|
+-------------------------------------+

使用
-1
索引以及
在=true之后插入\u

SELECT jsonb_insert( '{"res": [123, 456, 789, 101112]}', '{res, -1}', '333', true);

+-------------------------------------+
|jsonb_insert                         |
+-------------------------------------+
|{"res": [123, 456, 789, 101112, 333]}|
+-------------------------------------+
之后的
insert\u的默认值为
false
,这意味着尽管您以最后一个元素(索引=-1)为目标,但最终插入到倒数第二个位置:

select jsonb_insert( '{"res": [123, 223]}', '{res,-1}', '333');
       jsonb_insert       
--------------------------
 {"res": [123, 333, 223]}
select jsonb_insert( '{"res": [123, 223]}', '{res,1000000}', '333');
       jsonb_insert       
--------------------------
 {"res": [123, 223, 333]}
SELECT jsonb_insert( '{"res": [123, 456, 789, 101112]}', '{res, -1}', '333', false);

+-------------------------------------+
|jsonb_insert                         |
+-------------------------------------+
|{"res": [123, 456, 789, 333, 101112]}|
+-------------------------------------+