Postgres 9.2
Jeg citerer Andrew Dunstan på pgsql-hackerlisten:
På et tidspunkt vil der muligvis være nogle json-behandlingsfunktioner (i modsætning til json-producerende) funktioner, men ikke i 9.2.
Forhindrer ham ikke i at levere et eksempel på implementering i PLV8, der skulle løse dit problem. (Linket er dødt nu, se moderne PLV8 i stedet.)
Postgres 9.3
Tilbyder et arsenal af nye funktioner og operatører for at tilføje "json-processing".
- Manualen om ny JSON-funktionalitet.
- Postgres Wiki om nye funktioner på side 9.3.
Svaret på det oprindelige spørgsmål i Postgres 9.3:
SELECT *
FROM json_array_elements(
'[{"name": "Toby", "occupation": "Software Engineer"},
{"name": "Zaphod", "occupation": "Galactic President"} ]'
) AS elem
WHERE elem->>'name' = 'Toby';
Avanceret eksempel:
- Forespørgselskombinationer med indlejret matrix af poster i JSON-datatype
For større tabeller vil du måske tilføje et udtryksindeks for at øge ydeevnen:
- Indeks til at finde et element i et JSON-array
Postgres 9.4
Tilføjer jsonb
(b for "binær", værdier gemmes som native Postgres-typer) og endnu mere funktionalitet for begge typer. Ud over udtryksindekser nævnt ovenfor, jsonb
understøtter også GIN, btree og hash-indekser, hvor GIN er den mest potente af disse.
- Manualen til
json
ogjsonb
datatyper og funktioner. - Postgres Wiki på JSONB på side 9.4
Manualen går så langt som at foreslå:
Generelt bør de fleste applikationer foretrække at gemme JSON-data somjsonb
, medmindre der er ret specialiserede behov, såsom gamle antagelser om bestilling af objektnøgler.
Fed fremhævelse mine.
Ydeevne fordele ved generelle forbedringer af GIN-indekser.
Postgres 9.5
Fuldfør jsonb
funktioner og operatører. Tilføj flere funktioner for at manipulere jsonb
på plads og til visning.
- Større gode nyheder i udgivelsesbemærkningerne til Postgres 9.5.