Passer au contenu principal
eLearner.app
Module 15 · Leçon 2 sur 257/57 dans le cours~15 min
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, ...) ou jsonb_build_object(...)
  • json_agg(...) ou jsonb_agg(...)
SQL
SELECT json_build_object('name', first_name, 'city', city) AS data
FROM customers;

Vous verrez des lignes imprimées contenant { "name": "...", "city": "..." }, parfaitement conforme.

Exercice#sql.m15.l2.e1
Tentatives : 0Chargement…

À 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.

Chargement de l'éditeur…
Afficher l'indice

json_build_object('nom', prénom, 'mail', email)

Solution disponible après 3 tentatives

Exercice#sql.m15.l2.e2
Tentatives : 0Chargement…

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`.

Chargement de l'éditeur…
Afficher l'indice

JSON_AGG(product_id) plus un group by classique pour rassembler les données.

Solution disponible après 3 tentatives