我有一个JSONB存储。
requests: {
"0000": ["1111"],
"1111": ["2222"]
}
当我有一个初始值时,我可以很好地添加到商店中:
UPDATE users SET requests = jsonb_insert(requests::jsonb, '{2222}', $$["3333"]$$);
但是,如果我需要附加到数组中,它就像我试图替换值并抛出:
UPDATE users SET requests = jsonb_insert(requests::jsonb, '{0000}', $$["4444"]$$);
ERROR: cannot replace existing key
HINT: Try using the function jsonb_set to replace key value.
所需的输出为:
requests: {
"0000": ["1111", "4444"],
"1111": ["2222"]
}
似乎我错过了一个简单的array_append
或其他东西,但无法弄清楚。
我不确定你的结构,但这样:
create table users (requests jsonb);
路径中缺少数组索引:
t=# select * from users ;
requests
--------------------
{"0000": ["1111"]}
{"1111": ["2222"]}
(2 rows)
Time: 0.257 ms
t=# UPDATE users SET requests = jsonb_insert(requests::jsonb, '{0000,1}', '"4444"');
UPDATE 2
Time: 7.552 ms
t=# select * from users ;
requests
----------------------------
{"0000": ["1111", "4444"]}
{"1111": ["2222"]}
(2 rows)