Modulelessen (2/2)
JSON-aggregatiefuncties
JSON-aggregatiefuncties
De integratie is bidirectioneel. De database hoeft zich niet te beperken tot het parseren van JSON: hij kan deze bouwen. Stel je voor dat jouw API en Node.js niet het vuile, intensieve werk hoefden te doen van het serialiseren van geneste objecten in JSON, omdat de DB ze al rechtstreeks vanaf schijf had gebouwd.
Objecten en arrays bouwen
In plaats van de klassieke massaaggregatie of tekenreeksaaneenschakeling (String_agg), wenden we ons tot deze functies:
json_build_object(key, value, ...)ofjsonb_build_object(...)json_agg(...)ofjsonb_agg(...)
SELECT json_build_object('name', first_name, 'city', city) AS data
FROM customers;Er worden rijen afgedrukt met { "name": "...", "city": "..." }, perfect compatibel.
Retourneer de gegevens vanuit de tabel 'klanten' als JSON-rijen, toegewezen met \`json_build_object\`. Wijs twee sleutels toe: 'naam' gebonden aan 'voornaam', en 'mail' gebonden aan 'e-mail'. Gebruik \`AS customer_doc\` voor de kolom.
Toon hint
json_build_object('naam', voornaam, 'mail', e-mail)
Oplossing beschikbaar na 3 pogingen
Voor elke bestelling (\`order_id\`) bouwt u alle \`product_id\`s in één eenheid op. Voer vanuit de tabel 'order_items' \`GROUP BY order_id\` uit. Selecteer vervolgens \`order_id\` en verzamel alleen de \`product_id\`-gegevens in een JSON-array (JSON_AGG). Noem de array \`producten\`.
Toon hint
JSON_AGG(product_id) plus een klassieke groep door om de gegevens te verzamelen.
Oplossing beschikbaar na 3 pogingen