हटाएं एक टेबल की पंक्तियों पर काम करता है। इसलिए आप इसका उपयोग तब तक नहीं कर सकते जब तक आप पूरी पंक्ति को हटाना नहीं चाहते।
इसे आजमाएं:
create temp table testing as
select
'{ "playersContainer": {
"players": [
{
"id": "1",
"name": "Nick"
},
{
"id": "2",
"name": "Rick"
},
{
"id": "3",
"name": "Trick"
}
]
}}'::jsonb as value;
अब आपको उस खिलाड़ी की स्थिति ढूंढनी होगी जिसे आप हटाना चाहते हैं, मान लें कि आप रिक को आईडी 2 के साथ चाहते हैं (माइनस 1 क्योंकि इंडेक्स 0 से शुरू होता है)
select position-1 from testing, jsonb_array_elements(value->'playersContainer'->'players') with ordinality arr(elem, position) WHERE elem->>'id' = '2';
अब आप इसे UPDATE
. के साथ जोड़ सकते हैं फ़ील्ड को अद्यतन करने के लिए कथन। वांछित अनुक्रमणिका पर तत्व को निकालने के लिए ऋण (-) ऑपरेटर का उपयोग करें।
UPDATE testing SET value = jsonb_set(value, '{playersContainer,players}', (value->'playersContainer'->'players') - (select position-1 from testing, jsonb_array_elements(value->'playersContainer'->'players') with ordinality arr(elem, position) WHERE elem->>'id' = '2')::int );
अंतिम परिणाम:
{
"playersContainer":{
"players":[
{
"id":"1",
"name":"Nick"
},
{
"id":"3",
"name":"Trick"
}
]
}
}