Vai al contenuto
eLearner.app
Modulo 15 · Lezione 2 di 257/57 nel corso~15 min
Lezioni del modulo (2/2)

Funzioni di Aggregazione JSON

Funzioni di Aggregazione JSON

L'integrazione è bidirezionale. Il database non deve limitarsi a parsarli: può costruirli. Immagina se la tua API e Node.js non dovessero far lo sporco ed intensivo sforzo della serializzazione JSON degli oggetti annidati, se il DB glieli sparasse già fatti su disco.

Costruire Oggetti e Array

Invece della classica aggregazione o concatenazione di stringhe in massa (String_agg), noi ricorriamo alle funzioni:

  • json_build_object(chiave, valore, ...) o jsonb_build_object(...)
  • json_agg(...) o jsonb_agg(...)
SQL
SELECT json_build_object('name', first_name, 'city', city) AS data
FROM customers;

Troverai stampate a video row contenenti { "name": "...", "city": "..." } perfettamente compliant.

Esercizio#sql.m15.l2.e1
Tentativi: 0Caricamento…

Dalla tabella 'customers', restituisci i dati sotto forma di righe Json, mappate con \`json_build_object\`. Mappa due chiavi: 'name' associata a 'first_name', e 'mail' associata a 'email'. Usa \`AS customer_doc\` per la colonna.

Caricamento editor…
Mostra suggerimento

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

Soluzione disponibile dopo 3 tentativi

Esercizio#sql.m15.l2.e2
Tentativi: 0Caricamento…

Per ogni ordine (\`order_id\`), crea in un unicum tutti i \`product_id\` che include. Dalla tabella 'order_items', esegui \`GROUP BY order_id\`. Dunque seleziona \`order_id\` ed accumula nel JSON array (JSON_AGG) i soli dati di \`product_id\`. Chiama l'array \`products\`.

Caricamento editor…
Mostra suggerimento

JSON_AGG(product_id) e usa un group by classico per accollarci i dati.

Soluzione disponibile dopo 3 tentativi