PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie frage ich mit Feldern innerhalb des neuen PostgreSQL-JSON-Datentyps ab?

Postgres 9.2

Ich zitiere Andrew Dunstan auf der Pgsql-Hacker-Liste:

Irgendwann wird es möglicherweise einige json-verarbeitende (im Gegensatz zu json-erzeugenden) Funktionen geben, aber nicht in 9.2.

Dies hindert ihn nicht daran, eine Beispielimplementierung in PLV8 bereitzustellen, die Ihr Problem lösen sollte. (Link ist jetzt tot, siehe stattdessen modernes PLV8.)

Postgres 9.3

Bietet ein Arsenal an neuen Funktionen und Operatoren, um "json-processing" hinzuzufügen.

  • Das Handbuch zur neuen JSON-Funktionalität.
  • Das Postgres-Wiki zu neuen Funktionen in Seite 9.3.

Die Antwort auf die ursprüngliche Frage in Postgres 9.3:

SELECT *
FROM   json_array_elements(
  '[{"name": "Toby", "occupation": "Software Engineer"},
    {"name": "Zaphod", "occupation": "Galactic President"} ]'
  ) AS elem
WHERE elem->>'name' = 'Toby';

Fortgeschrittenes Beispiel:

  • Abfragekombinationen mit verschachteltem Array von Datensätzen im JSON-Datentyp

Bei größeren Tabellen möchten Sie vielleicht einen Ausdrucksindex hinzufügen, um die Leistung zu steigern:

  • Index zum Auffinden eines Elements in einem JSON-Array

Postgres 9.4

Fügt jsonb hinzu (b für "binary", Werte werden als native Postgres-Typen gespeichert) und noch mehr Funktionalität für beide Typen. Zusätzlich zu den oben erwähnten Ausdrucksindizes, jsonb unterstützt auch GIN-, Btree- und Hash-Indizes, wobei GIN der stärkste davon ist.

  • Das Handbuch zu json und jsonb Datentypen und Funktionen.
  • Das Postgres-Wiki auf JSONB in ​​Seite 9.4

Das Handbuch geht so weit, vorzuschlagen:

Im Allgemeinen sollten die meisten Anwendungen es vorziehen, JSON-Daten als jsonb zu speichern , es sei denn, es gibt ganz spezielle Anforderungen, wie z. B. alte Annahmen über die Reihenfolge von Objektschlüsseln.

Fettdruck von mir.

Die Leistung profitiert von allgemeinen Verbesserungen der GIN-Indizes.

Postgres 9.5

Vervollständigen Sie jsonb Funktionen und Operatoren. Fügen Sie weitere Funktionen hinzu, um jsonb zu manipulieren an Ort und Stelle und zur Anzeige.

  • Wichtige gute Nachrichten in den Versionshinweisen von Postgres 9.5.