Postgres 9.2
Ik citeer Andrew Dunstan op de pgsql-hackerslijst:
Op een bepaald moment zullen er mogelijk enkele json-verwerkingsfuncties (in tegenstelling tot json-producerende) functies zijn, maar niet in 9.2.
Het belet hem niet om een voorbeeldimplementatie in PLV8 te geven die uw probleem zou moeten oplossen. (Link is nu dood, zie in plaats daarvan moderne PLV8.)
Postgres 9.3
Biedt een arsenaal aan nieuwe functies en operators om "json-processing" toe te voegen.
- De handleiding over nieuwe JSON-functionaliteit.
- De Postgres Wiki over nieuwe functies in pg 9.3.
Het antwoord op de oorspronkelijke vraag 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';
Geavanceerd voorbeeld:
- Querycombinaties met geneste reeks records in JSON-gegevenstype
Voor grotere tabellen wilt u misschien een expressie-index toevoegen om de prestaties te verbeteren:
- Index voor het vinden van een element in een JSON-array
Postgres 9.4
Voegt jsonb
. toe (b voor "binair", waarden worden opgeslagen als native Postgres-typen) en nog meer functionaliteit voor beide soorten. Naast de hierboven genoemde expressie-indexen, jsonb
ondersteunt ook GIN-, btree- en hash-indexen, waarvan GIN de krachtigste is.
- De handleiding over
json
enjsonb
gegevenstypen en functies. - De Postgres Wiki op JSONB op pg 9.4
De handleiding gaat zelfs zo ver als te suggereren:
Over het algemeen zouden de meeste applicaties de voorkeur moeten geven aan het opslaan van JSON-gegevens alsjsonb
, tenzij er heel gespecialiseerde behoeften zijn, zoals oude veronderstellingen over het bestellen van objectsleutels.
Vetgedrukte nadruk van mij.
Prestatievoordelen van algemene verbeteringen aan GIN-indexen.
Postgres 9.5
Voltooi jsonb
functies en operators. Voeg meer functies toe om jsonb
te manipuleren op zijn plaats en voor weergave.
- Belangrijk goed nieuws in de release notes van Postgres 9.5.