SQL Academy · Oppitunti

Polkuoperaattorit: -> ->> @>

Navigoi JSONB-dokumenteissa operaattoreilla ->, ->>, #>> ja tarkista sisältäminen operaattoreilla @> sekä jsonb_path_query-perheen funktioilla.

Oppitunti 2/414 vaihetta

Polkuoperaattorit: -> ->> @> on ilmainen SQL Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu SQL Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. SQL Academy-kurssilla on yhteensä 4 oppituntia.

Kolme operaattoriperhettä

JSONB:n polkuoperaattorit jakautuvat kolmeen ryhmään:

  • -> ja ->> — poimivat arvon avaimen tai indeksin perusteella
  • #> ja #>> — poimivat arvon polun perusteella
  • @> ja ? — testaavat sisältämistä tai avaimen olemassaoloa

-> palauttaa JSONB:n

Poimikaa arvo ja säilyttäkää se JSONB:nä:

SELECT data->'user_id' FROM events;
-- returns JSONB like  42

SELECT data->0 FROM events;
-- first element of a JSONB array

->> palauttaa tekstin

Poimikaa arvo TEXT-muodossa — hyödyllistä tyyppimuunnoksissa:

SELECT data->>'user_id'  FROM events;
-- '42'  (TEXT)

SELECT (data->>'user_id')::BIGINT FROM events;
-- 42    (BIGINT)

#> polun poiminta (JSONB)

Kuljettakaa usean tason läpi avainten taulukon avulla:

SELECT data #> '{user, address, city}' FROM events;
-- nested JSONB value

#>> polun poiminta (TEXT)

Sama kuin #>, mutta palauttaa TEXT-arvon:

SELECT data #>> '{user, address, city}' FROM events;
-- 'Berlin'

@> sisältäminen

"Sisältääkö asiakirja tämän ala-asiakirjan?" — hyödyllisin suodatin:

SELECT * FROM events
WHERE data @> '{"type":"login"}';

-- Works for nested matching too:
WHERE data @> '{"user":{"plan":"pro"}}'

? avaimen olemassaolo

Testatkaa, onko avain ylimmällä tasolla:

SELECT * FROM events WHERE data ? 'error';
SELECT * FROM events WHERE data ?| ARRAY['a','b'];    -- any of these keys
SELECT * FROM events WHERE data ?& ARRAY['a','b'];    -- all of these keys

JSONB-polkuhaut (jsonb_path_query)

Moderni PostgreSQL tukee SQL/JSON-polkulausekkeita:

SELECT jsonb_path_query(data, '$.user.tags[*]') FROM events;
SELECT jsonb_path_exists(data, '$.user.tags[*] ? (@ == "admin")') FROM events;

Yhdistäminen indekseihin

GIN-indeksi nopeuttaa @>- ja ?-operaattoreita:

CREATE INDEX events_data_gin ON events USING GIN (data);
-- supports @>, ?, ?|, ?&

CREATE INDEX events_data_path_gin ON events USING GIN (data jsonb_path_ops);
-- smaller, faster — but only supports @>

JSONB:n sisäisten taulukoiden kyselyt

Etsikää asiakirjat, joiden taulukko sisältää tietyn arvon:

SELECT * FROM events
WHERE data->'tags' @> '["admin"]'::JSONB;

-- Or via path query:
SELECT * FROM events
WHERE jsonb_path_exists(data, '$.tags[*] ? (@ == "admin")');

JSONB:n päivittäminen

Muokkaamiseen käytetään jsonb_set-, ||- ja --operaattoreita:

UPDATE events
SET data = jsonb_set(data, '{user,plan}', '"pro"')
WHERE id = 1;

UPDATE events SET data = data || '{"new_field":true}'::JSONB;
UPDATE events SET data = data - 'old_field';

JSONB:n koostaminen

Koostakaa useita rivejä yhdeksi JSONB-arvoksi:

SELECT jsonb_agg(data) FROM events WHERE user_id = 42;
SELECT jsonb_object_agg(name, value) FROM settings;

Kertaus

Polkuoperaattorit kattavat kaiken poiminnasta muuttamiseen.

  • -> JSONB, ->> TEXT
  • #> polku, #>> polku TEXT
  • @> sisältäminen (GIN-indeksoitava)
  • jsonb_set / || / - päivityksiin

Pikatarkistus

Mitä eroa on data->'k'- ja data->>'k'-lausekkeilla?

Aloita maksutta

Opi SQL tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
46
Oppitunnit
183

Usein kysytyt kysymykset

Onko oppitunti ”Polkuoperaattorit: -> ->> @>” ilmainen?

Kyllä – oppitunnin ”Polkuoperaattorit: -> ->> @>” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko SQL Academy-kurssin, päivitä CoddyKit PROhon. SQL Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Polkuoperaattorit: -> ->> @>”?

Navigoi JSONB-dokumenteissa operaattoreilla ->, ->>, #>> ja tarkista sisältäminen operaattoreilla @> sekä jsonb_path_query-perheen funktioilla. Harjoittelet SQL Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni SQL Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin SQL Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Polkuoperaattorit: -> ->> @>”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä SQL Academy-oppitunnilla?

Kyllä. Jokainen SQL Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. JSONB vai JSON: milloin kumpaakin käytetään
  2. Polkuoperaattorit: -> ->> @>
  3. JSONB:n indeksointi GIN-indekseillä
  4. Tietomallinnus: milloin JSONB voittaa normalisoinnin
← Takaisin: SQL Academy