الانتقال إلى المحتوى الرئيسي
الوحدة 15 · الدرس 2 من 257/57 في الدورة~15 min
دروس الوحدة (2/2)

وظائف تجميع JSON

وظائف تجميع JSON

التكامل هو ثنائي الاتجاه. ليس من الضروري أن تقتصر قاعدة البيانات على تحليل JSON: بل يمكنها بنائها. تخيل لو أن واجهة برمجة التطبيقات (API) وNode.js الخاصة بك لم تكن مضطرة إلى القيام بالعمل القذر والمكثف المتمثل في تسلسل الكائنات المتداخلة إلى JSON، لأن قاعدة البيانات سلمتها بالفعل مبنية مباشرة من القرص.

بناء الكائنات والمصفوفات

بدلاً من التجميع الجماعي الكلاسيكي أو تسلسل السلسلة (String_agg)، ننتقل إلى هذه الوظائف:

  • json_build_object(key, value, ...) أو jsonb_build_object(...)
  • json_agg(...) أو jsonb_agg(...)
SQL
SELECT json_build_object('name', first_name, 'city', city) AS data
FROM customers;

ستشاهد صفوفًا مطبوعة تحتوي على { "name": "...", "city": "..." }، وهي متوافقة تمامًا.

تمرين#sql.m15.l2.e1
المحاولات: 0جارٍ التحميل…

من جدول "العملاء"، قم بإرجاع البيانات كصفوف JSON، تم تعيينها باستخدام \`json_build_object\`. قم بتعيين مفتاحين: "الاسم" المرتبط بـ "الاسم_الأول"، و"البريد" المرتبط بـ "البريد الإلكتروني". استخدم \`AS customer_doc\` للعمود.

جارٍ تحميل المحرر…
إظهار التلميح

json_build_object('الاسم'، الاسم الأول، 'البريد'، البريد الإلكتروني)

الحل متاح بعد 3 من المحاولات

تمرين#sql.m15.l2.e2
المحاولات: 0جارٍ التحميل…

لكل طلب (\`order_id\`)، قم بإنشاء وحدة واحدة كافة \`product_id\`s التي يتضمنها. من جدول 'order_items'، قم بتشغيل \`GROUP BY order_id\`. ثم حدد \`order_id\` وقم بتجميع بيانات \`product_id\` فقط في مصفوفة JSON (JSON_AGG). قم بتسمية المصفوفة \`المنتجات\`.

جارٍ تحميل المحرر…
إظهار التلميح

JSON_AGG(product_id) بالإضافة إلى مجموعة كلاسيكية لجمع البيانات.

الحل متاح بعد 3 من المحاولات