Polkuoperaattorit: -> ->> @>
Navigoi JSONB-dokumenteissa operaattoreilla ->, ->>, #>> ja tarkista sisältäminen operaattoreilla @> sekä jsonb_path_query-perheen funktioilla.
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 keysJSONB-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?
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
- JSONB vai JSON: milloin kumpaakin käytetään
- Polkuoperaattorit: -> ->> @>
- JSONB:n indeksointi GIN-indekseillä
- Tietomallinnus: milloin JSONB voittaa normalisoinnin