[英]How to UPDATE "key" in JSONB array in PostgreSQL DB
我想更新 PostgreSQL 數據庫中的 JSONB 數組,但我得到的大多數解決方案都是更新值而不是鍵。 我的目標是將鍵“SpindSpeed_Med”更改為“SpindleSpeed”,將“RapidOveride_Med”更改為“RapidOverride”。
查詢以創建示例數據庫:
CREATE TABLE test (
uid int,
tooldata jsonb
);
INSERT INTO test (uid, tooldata)
VALUES (1, '[
{
"Ftn": 1,
"SpindSpeed_Med": 1234,
"RapidOveride_Med": 100
},
{
"Ftn": 2,
"SpindSpeed_Med": 1234,
"RapidOveride_Med": 100
},
{
"Ftn": 3,
"SpindSpeed_Med": 1234,
"RapidOveride_Med": 100
}]'),
(2, '[
{
"Ftn": 1,
"SpindSpeed_Med": 1234,
"RapidOveride_Med": 100
},
{
"Ftn": 2,
"SpindSpeed_Med": 1234,
"RapidOveride_Med": 100
},
{
"Ftn": 3,
"SpindSpeed_Med": 1234,
"RapidOveride_Med": 100
}
]');
^更新了多行並添加了 uid
預期結果:
[{"Ftn": 1, "SpindleSpeed": 1234, "RapidOverride": 100},
{"Ftn": 2, "SpindleSpeed": 1234, "RapidOverride": 100},
{"Ftn": 3, "SpindleSpeed": 1234, "RapidOverride": 100}]
我試過使用“jsonb_set”,但這只會改變值部分而不是鍵。 此外,我使用了“jsonb_object_keys”和“jsonb_array_elements”的組合,但結果只給出了鍵,我無法將它放回數組中。 提前致謝!
select jsonb_agg (q2) from (
select json_agg(
j::jsonb - 'SpindSpeed_Med' ||
jsonb_build_object('SpindleSpeed', j->'SpindSpeed_Med')
)
from (
select jsonb_array_elements(tooldata) as j from jsontest
) as q) as q2 ;
首先,將 jsonb 數組拆分為行,刪除“SpindSpeed_Med”,為每一行添加“SpindleSpeed”,最后組合回 jsonb。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.