Lecții din modul (2/2)
Funcții de agregare JSON
Funcții de agregare JSON
Integrarea este bidirecțională. Baza de date nu trebuie să se limiteze la analizarea JSON: o poate construi. Imaginează-ți dacă API-ul tău și Node.js nu ar fi trebuit să facă munca murdară și intensă de a serializa obiectele imbricate în JSON, deoarece DB le-a livrat deja construite direct de pe disc.
Construirea de obiecte și tablouri
În loc de agregarea în masă clasică sau concatenarea șirurilor (String_agg), ne întoarcem la aceste funcții:
json_build_object(key, value, ...)saujsonb_build_object(...)json_agg(...)saujsonb_agg(...)
SELECT json_build_object('name', first_name, 'city', city) AS data
FROM customers;Veți vedea rânduri tipărite care conțin { "name": "...", "city": "..." }, perfect conforme.
Din tabelul „clienți”, returnați datele ca rânduri JSON, mapate cu \`json_build_object\`. Hartați două chei: „nume” legat de „first_name” și „e-mail” legat de „e-mail”. Folosiți \`AS customer_doc\` pentru coloană.
Afișează indiciu
json_build_object('nume', prenume, 'e-mail', e-mail)
Soluție disponibilă după 3 încercări
Pentru fiecare comandă (\`order_id\`), construiți într-o singură unitate toate \`product_id\`-urile pe care le include. Din tabelul „articole_comandă”, rulați \`GROUP BY order_id\`. Apoi selectați \`order_id\` și acumulați într-o matrice JSON (JSON_AGG) doar datele \`product_id\`. Denumiți matricei \`produs\`.
Afișează indiciu
JSON_AGG(product_id) plus un grup clasic de pentru a aduna datele.
Soluție disponibilă după 3 încercări