Laut dem Telegrammkanal Cross the Join fiel das Repository Postgres Komichi , einfacher mit jsonb zu arbeiten. Sie können jetzt mit eckigen Klammern auf Teile von jsonb zugreifen. Dies funktioniert sowohl beim Lesen als auch beim Schreiben.
Auf Wiedersehen jsonb_set und andere Krücken mögen data = data - 'a' || '{"a":5}'
Einige Beispiele:
Wir aktualisieren den Wert des Objekts per Schlüssel. 25 ist hier eine Zahl, aber in Anführungszeichen eingeschlossen, da der zugewiesene Wert jsonb sein muss
-- (person_data jsonb)
UPDATE users
SET person_data['age'] = '25';
Das Update funktioniert auch mit leerem (null) jsonb.
Wir filtern die Tabelle nach dem Feld name = Pasha. Pascha ist eine Zeichenfolge, aber auch in der jsonb-Form geschrieben: "Pascha", also zusätzliche doppelte Anführungszeichen
SELECT *
FROM users
WHERE person_data['name'] = '"Pasha"';
Ermitteln Sie den Wert des Objekts anhand des Schlüssels "Alter".
SELECT ('{"age": 25}'::jsonb)['age'];
Oder Sie können einen langen Pfad angeben
SELECT ('{"a": {"b": {"c": 1}}}'::jsonb)['a']['b']['c'];
Array-Element nach Index
SELECT ('[1, "2", null]'::jsonb)[1];
Am wichtigsten ist, dass die Änderungen in postgreSQL 14 enthalten sind!
Die ursprüngliche Idee der Syntax gehört Oleg Bartunov, Implementierung - Dmitry Dolgov