Anhängen (pushing) und das entfernen von einem JSON-array in PostgreSQL 9.5+
Für Versionen kleiner als 9.5 sehen, diese Frage
Habe ich eine Tabelle in PostgreSQL mit diesem:
CREATE TEMP TABLE jsontesting
AS
SELECT id, jsondata::jsonb FROM ( VALUES
(1, '["abra","value","mango", "apple", "sample"]'),
(2, '["japan","china","india", "russia", "australia"]'),
(3, '["must", "match"]'),
(4, '["abra","value","true", "apple", "sample"]'),
(5, '["abra","false","mango", "apple", "sample"]'),
(6, '["string","value","mango", "apple", "sample"]'),
(7, '["must", "watch"]')
) AS t(id,jsondata);
Nun, was ich wollte, war
- hinzufügen Etwas wie append_to_json_array dauert in der tatsächlichen jsondata was ist ein json-array und die newString, die ich hinzufügen, dass jsondata array, und diese Funktion sollte den aktualisierten json-array.
UPDATE jsontesting SET jsondata=append_to_json_array(jsondata, 'newString') WHERE id = 7;
- entfernen einen Wert von json-Daten-array, eine Funktion für das entfernen der Wert.
Habe ich versucht zu suchen, der Dokumentation von PostgreSQL, aber nichts gefunden.
InformationsquelleAutor Evan Carroll | 2017-02-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinzufügen, um den Wert verwenden Sie die JSON-array Anhängen opperator (
||
)Entfernen Sie den Wert wie folgt aussieht
Verketten, um ein verschachteltes Feld sieht wie folgt aus
Jedes mal, wenn Sie eine Spalte aktualisieren, PostgreSQL aktualisieren muss die gesamte Zeile.
könnten Sie mir eine Quelle für diese? Ich möchte nur Lesen, ein bisschen mehr in Sie.
alles MVCC. Es ist, wie Sie alle arbeiten. Es löst das isolation-problem. Wenn Sie ein update einer Zeile, die Zeile kann nicht sichtbar sein, auf eine Transaktion vor, Ihr verpflichten, aber es muss sichtbar sein, um Ihre eigene Transaktion. So schreiben Sie, dass die Reihe auf den Tisch, als eine tote Reihe. Wenn Sie sich verpflichten, Sie machen es live. Bis Sie verpflichten sich, andere Transaktionen Ansicht die Zeile im vorherigen Zustand.
besser noch:
SET jsondata = jsondata - 'newString'
InformationsquelleAutor Evan Carroll
Hinzufügen Evan Carroll beantworten, möchten Sie vielleicht, um die folgenden setzen die Spalte auf ein leeres array, wenn es
NULL
. Der append-operator (||
) tut sich nichts, wenn die Spalte ist derzeitNULL
.InformationsquelleAutor Matt Reyer