דילוג לתוכן המרכזי
מודול 15 · שיעור 2 מתוך 257/57 בקורס~15 min
שיעורי מודול (2/2)

פונקציות צבירה של JSON

פונקציות צבירה של JSON

האינטגרציה היא דו כיוונית. מסד הנתונים לא חייב להגביל את עצמו לניתוח JSON: הוא יכול לבנות אותו. תארו לעצמכם אם ה-API וה-Node.js שלכם לא היו צריכים לעשות את העבודה המלוכלכת והאינטנסיבית של הסדרת אובייקטים מקוננים ל-JSON, מכיוון שה-DB סיפק אותם כבר בנויים ישירות מהדיסק.

בניית אובייקטים ומערכים

במקום צבירה המונית הקלאסית או שרשור מחרוזת (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\`. מפה שני מפתחות: 'שם' מאוגד ל-'first_name', ו-'mail' קשור ל-'email'. השתמש ב-\`AS customer_doc\` עבור העמודה.

טוען עורך...
הצג רמז

json_build_object('name', first_name, 'mail', email)

הפתרון זמין לאחר 3 ניסיונות

פעילות גופנית#sql.m15.l2.e2
ניסיונות: 0טוען...

עבור כל הזמנה (\`order_id\`), בנה ביחידה אחת את כל \`product_id\`s שהיא כוללת. מהטבלה 'order_items', הפעל את \`GROUP BY order_id\`. לאחר מכן בחר ב\`order_id\` וצבור למערך JSON (JSON_AGG) רק את הנתונים של \`product_id\`. תן שם למערך \`מוצרים\`.

טוען עורך...
הצג רמז

JSON_AGG(product_id) בתוספת קבוצה קלאסית על ידי כדי לאסוף את הנתונים.

הפתרון זמין לאחר 3 ניסיונות