0Pricing
SQL Academy · درس

معاملات المسار: -> ->> @>

تنقّل في مستندات JSONB باستخدام -> و->> و#>>، وتحقق من الاحتواء باستخدام @> وعائلة jsonb_path_query

معاملات المسار: -> ->> @> درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 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/JSON:

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'؟

الأسئلة الشائعة

هل درس «معاملات المسار: -> ->> @>» مجاني؟

نعم — نص درس «معاملات المسار: -> ->> @>» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.

ماذا ستتعلم في «معاملات المسار: -> ->> @>»؟

تنقّل في مستندات JSONB باستخدام -> و->> و#>>، وتحقق من الاحتواء باستخدام @> وعائلة jsonb_path_query تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟

لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «معاملات المسار: -> ->> @>»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟

نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. JSONB مقابل JSON: متى تستخدم كلًّا منهما
  2. معاملات المسار: -> ->> @>
  3. فهرسة JSONB باستخدام GIN
  4. النمذجة: متى يتفوق JSONB على التطبيع
← العودة إلى SQL Academy