2017-10-10 74 views
0

我想更新我的jsonb字段,它存儲對象數組。 我想添加新的對象。如何在postgresql jsonb字段中追加對象,同時更新

CREATE TABLE justjson (id INTEGER, doc JSONB); 
INSERT INTO justjson VALUES (1, '[ 
    { 
    "name": "abc", 
    "age": "22" 
    }, 
    { 
    "name": "def", 
    "age": "23" 
    } 
]'); 

然後像價值

select doc from justjson; 

doc 
[{"age": "22", "name": "abc"}, {"age": "23", "name": "def"}] 

現在,我想在這個jsonb

{"age": "45", "name": "xyz"} 

如何更新此字段追加新的對象?

我的輸出如

doc 
    [{"age": "22", "name": "abc"}, {"age": "23", "name": "def"},{"age": "45", "name": "xyz"}] 
+1

[在這裏尋找](https://www.postgresql.org/ docs/current/static/functions-json.html)*將兩個jsonb值連接成一個新的jsonb值。* – klin

回答

0
使用

並置運算符||到一個元件附加到一個數組:

UPDATE justjson 
SET doc = doc || '{"age": "45", "name": "xyz"}'::jsonb 
WHERE is = 1; 
+0

對於所有神聖事物的愛,放入一個解釋 - 你應該知道這個已被標記,它是打低質量隊列。 :D從[審查隊列](https://stackoverflow.com/review/low-quality-posts/17579127) –

+1

感謝您的代碼片段,它可能會提供一些有限的即時幫助。通過展示*爲什麼*這是一個很好的解決方案,並且使它對未來的讀者更有用,一個正確的解釋[將大大提高](// meta.stackexchange.com/q/114762)其長期價值其他類似的問題。請[編輯]你的答案以添加一些解釋,包括你所做的假設。 –

+0

@YvetteColomb這種殷切的吸引力不可能是前所未聞的。 –