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

w.k*_*w.k 2 postgresql jsonb

jsonb在 Postgres 表中有这样的结构:{ "res": [123, 223] }并且我想将值推入res-array 中。我不知道数组上有多少个值以及jsonb_insert对位置进行操作,所以我尝试使用-1位置:

select jsonb_insert( '{"res": [123, 223]}', '{res,-1}', '333');
       jsonb_insert       
--------------------------
 {"res": [123, 333, 223]}
Run Code Online (Sandbox Code Playgroud)

这是行不通的。如何将新值推入数组末尾?

我正在使用 Postgres 9.6

Mar*_*rth 6

-1索引与 一起使用insert_after = true

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

+-------------------------------------+
|jsonb_insert                         |
+-------------------------------------+
|{"res": [123, 456, 789, 101112, 333]}|
+-------------------------------------+
Run Code Online (Sandbox Code Playgroud)

的默认值为,insert_afterfalse意味着虽然您的目标是最后一个元素 (index = -1),但您最终会插入到倒数第二个位置:

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

+-------------------------------------+
|jsonb_insert                         |
+-------------------------------------+
|{"res": [123, 456, 789, 333, 101112]}|
+-------------------------------------+
Run Code Online (Sandbox Code Playgroud)