sql >> Databáze >  >> RDS >> PostgreSQL

Jak mohu dotazovat pomocí polí v novém datovém typu PostgreSQL JSON?

Postgres 9.2

Cituji Andrewa Dunstana ze seznamu hackerů pgsql:

V určité fázi možná budou nějaké funkce pro zpracování json (na rozdíl od funkcí produkujících json), ale ne v 9.2.

Nebrání mu v poskytnutí příkladu implementace v PLV8, který by měl vyřešit váš problém. (Odkaz je nyní mrtvý, podívejte se místo něj na moderní PLV8.)

Postgres 9.3

Nabízí arzenál nových funkcí a operátorů pro přidání „json-processing“.

  • Příručka o nových funkcích JSON.
  • Postgres Wiki o nových funkcích na str. 9.3.

Odpověď na původní otázku v Postgres 9.3:

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

Pokročilý příklad:

  • Kombinace dotazů s vnořeným polem záznamů v datovém typu JSON

Pro větší tabulky možná budete chtít přidat výrazový index pro zvýšení výkonu:

  • Index pro nalezení prvku v poli JSON

Postgres 9.4

Přidá jsonb (b pro "binární", hodnoty jsou uloženy jako nativní typy Postgres) a ještě více funkcí pro obě typy. Kromě indexů výrazů uvedených výše, jsonb podporuje také indexy GIN, btree a hash, přičemž GIN je z nich nejúčinnější.

  • Příručku json a jsonb datové typy a funkce.
  • Postgres Wiki na JSONB na str. 9.4

Manuál jde tak daleko, že navrhuje:

Obecně platí, že většina aplikací by měla preferovat ukládání dat JSON jako jsonb , pokud neexistují zcela specializované potřeby, jako jsou starší předpoklady o uspořádání klíčů objektů.

Tučné zdůraznění moje.

Výkon těží z obecných vylepšení indexů GIN.

Postgres 9.5

Vyplňte jsonb funkce a operátory. Přidejte další funkce pro manipulaci s jsonb na místě a pro zobrazení.

  • Hlavní dobrá zpráva v poznámkách k vydání Postgres 9.5.


  1. Můžeme použít vlákno v PL/SQL?

  2. Jak nainstalovat Libreoffice na Ubuntu 16.04

  3. Java - najděte první příčinu výjimky

  4. Funkce SUM() v MariaDB