ప్రధాన కంటెంట్‌కు వెళ్లండి
మాడ్యూల్ 15 · 2లో పాఠం 2కోర్సులో 57/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_build_object\`తో మ్యాప్ చేయబడిన డేటాను JSON అడ్డు వరుసలుగా తిరిగి ఇవ్వండి. మ్యాప్ రెండు కీలు: 'name' 'first_name'కి కట్టుబడి, మరియు 'mail' 'email'కి కట్టుబడి ఉంటుంది. నిలువు వరుస కోసం \`AS customer_doc\`ని ఉపయోగించండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

json_build_object('పేరు', మొదటి_పేరు, 'మెయిల్', ఇమెయిల్)

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

వ్యాయామం#sql.m15.l2.e2
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

ప్రతి ఆర్డర్ (\`order_id\`) కోసం, ఇది కలిగి ఉన్న అన్ని \`product_id\`లను ఒకే యూనిట్‌లో నిర్మించండి. 'order_items' పట్టిక నుండి, \`GROUP BY order_id\`ని అమలు చేయండి. ఆపై \`order_id\`ని ఎంచుకుని, కేవలం \`product_id\` డేటాను JSON శ్రేణి (JSON_AGG)లో సేకరించండి. శ్రేణికి \`ఉత్పత్తులు\` పేరు పెట్టండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

డేటాను సేకరించడానికి JSON_AGG(product_id) ప్లస్ క్లాసిక్ గ్రూప్.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది