0Pricing
SQL Academy · บทเรียน

ตัวดำเนินการเส้นทาง: -> ->> @>

สำรวจเอกสาร JSONB ด้วย ->, ->>, #>> และตรวจสอบการมีข้อมูลครอบคลุมด้วย @> รวมถึงชุดฟังก์ชัน jsonb_path_query

ตัวดำเนินการเส้นทาง: -> ->> @> เป็นบทเรียน SQL Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน SQL Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน

ตัวดำเนินการสามกลุ่ม

ตัวดำเนินการพาธของ JSONB มีอยู่สามรูปแบบ:

  • -> และ ->> — ดึงข้อมูลตามคีย์หรือดัชนี
  • #> และ #>> — ดึงข้อมูลตามพาธ
  • @> และ ? — ทดสอบการมีข้อมูลครอบคลุมหรือการมีอยู่ของคีย์

-> ส่งคืน JSONB

ดึงค่าออกมาโดยคงชนิดข้อมูลเป็น JSONB:

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

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

->> ส่งคืนข้อความ

ดึงค่าออกมาเป็น TEXT ซึ่งมีประโยชน์สำหรับการแปลงชนิดข้อมูล:

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

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

#> ดึงข้อมูลตามพาธ (JSONB)

ไล่ผ่านหลายระดับด้วยอาร์เรย์ของคีย์:

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

#>> ดึงข้อมูลตามพาธ (TEXT)

เหมือนกับ #> แต่ส่งคืนค่าเป็น TEXT:

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

@> การมีข้อมูลครอบคลุม

เอกสารนี้มีเอกสารย่อยดังกล่าวอยู่หรือไม่ — ตัวกรองที่มีประโยชน์ที่สุด:

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

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

? การมีอยู่ของคีย์

ทดสอบว่ามีคีย์อยู่ในระดับบนสุดหรือไม่:

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 (jsonb_path_query)

PostgreSQL สมัยใหม่รองรับนิพจน์พาธสำหรับข้อมูลเจสันตามมาตรฐาน SQL:

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

การใช้ร่วมกับดัชนี

ดัชนี GIN ทำให้ @> และ ? ทำงานได้รวดเร็ว:

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

ค้นหาเอกสารที่อาร์เรย์มีค่าที่ระบุ:

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

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

การอัปเดต JSONB

ใช้ jsonb_set, ||, - เพื่อแก้ไขข้อมูล:

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

รวมหลายแถวให้เป็น JSONB หนึ่งรายการ:

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

สรุป

ตัวดำเนินการพาธทำได้ทุกอย่าง ตั้งแต่การดึงข้อมูลไปจนถึงการเปลี่ยนแปลงข้อมูล

  • -> JSONB, ->> TEXT
  • #> พาธ, #>> พาธเป็น TEXT
  • @> การมีข้อมูลครอบคลุม ซึ่งสร้างดัชนี GIN ได้
  • jsonb_set / || / - สำหรับการอัปเดต

ตรวจสอบความเข้าใจอย่างรวดเร็ว

อะไรคือความแตกต่างระหว่าง data->'k' และ data->>'k'

คำถามที่พบบ่อย

บทเรียน “ตัวดำเนินการเส้นทาง: -> ->> @>” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ตัวดำเนินการเส้นทาง: -> ->> @>” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส SQL Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ตัวดำเนินการเส้นทาง: -> ->> @>”

สำรวจเอกสาร JSONB ด้วย ->, ->>, #>> และตรวจสอบการมีข้อมูลครอบคลุมด้วย @> รวมถึงชุดฟังก์ชัน jsonb_path_query คุณปฏิบัติ SQL Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน SQL Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน SQL Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “ตัวดำเนินการเส้นทาง: -> ->> @>” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน SQL Academy นี้ได้ไหม

ได้ บทเรียน SQL Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. JSONB เทียบกับ JSON: ควรใช้แบบใด
  2. ตัวดำเนินการเส้นทาง: -> ->> @>
  3. การสร้างดัชนี JSONB ด้วย GIN
  4. การสร้างแบบจำลอง: เมื่อ JSONB เหมาะกว่าการทำให้เป็นบรรทัดฐาน
← กลับไปที่ SQL Academy