Leçons du module (2/2)
Fonctions d'agrégation JSON
Fonctions d'agrégation JSON
L'intégration est bidirectionnelle. La base de données ne doit pas se limiter à analyser JSON : elle peut le construire. Imaginez si votre API et Node.js n'avaient pas à effectuer le travail sale et intensif de sérialisation des objets imbriqués dans JSON, car la base de données les a livrés déjà construits directement à partir du disque.
Construire des objets et des tableaux
Au lieu de l'agrégation de masse classique ou de la concaténation de chaînes (String_agg), nous nous tournons vers ces fonctions :
json_build_object(key, value, ...)oujsonb_build_object(...)json_agg(...)oujsonb_agg(...)
SELECT json_build_object('name', first_name, 'city', city) AS data
FROM customers;Vous verrez des lignes imprimées contenant { "name": "...", "city": "..." }, parfaitement conforme.
À partir de la table « clients », renvoyez les données sous forme de lignes JSON, mappées avec `json_build_object`. Mappez deux clés : « nom » lié à « prénom » et « mail » lié à « e-mail ». Utilisez `AS customer_doc` pour la colonne.
Afficher l'indice
json_build_object('nom', prénom, 'mail', email)
Solution disponible après 3 tentatives
Pour chaque commande (`order_id`), construire en une seule unité tous les `product_id` qu'elle comprend. À partir de la table 'order_items', exécutez `GROUP BY order_id`. Sélectionnez ensuite `order_id` et accumulez dans un tableau JSON (JSON_AGG) uniquement les données `product_id`. Nommez le tableau `products`.
Afficher l'indice
JSON_AGG(product_id) plus un group by classique pour rassembler les données.
Solution disponible après 3 tentatives