[英]Remove nested json object from array in postgres
我在 postgres 中有一個 json object 字段,具有以下形狀
{
"a": {
},
"b": [
{
}
],
"c": {
"d": "",
"e": [
{
"id": 1234,
"f": "",
"g": ""
}
]
}
}
我想知道如何編寫一個語句,從 postgres 中 id 為 1234 的 e 數組中刪除對象。 e 可以有多個對象,如果 e 數組中有多個對象,我想保留這些對象,並且只刪除 id 為 1234 的 object。
謝謝
UPDATE t
SET data = jsonb_set(data::jsonb, '{c,e}', s.new_array::jsonb)::json -- 4
FROM (
SELECT
json_agg(value) as new_array -- 3
FROM
t,
json_array_elements(data -> 'c' -> 'e') -- 1
WHERE value ->> 'id' != '1234' -- 2
) s;
UPDATE
,你可以使用jsonb_set()
function 用你新創建的數組更新 JSON 元素。 除非您不使用類型jsonb
,否則您必須將您的 JSON 數據轉換為jsonb
(並將結果返回類型json
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.