Уроки модуля (2/2)
Функции агрегирования JSON
Функции агрегирования JSON
Интеграция двусторонняя. Базе данных не обязательно ограничиваться анализом JSON: она может его построить. Представьте себе, если бы вашему API и Node.js не приходилось выполнять грязную и интенсивную работу по сериализации вложенных объектов в JSON, поскольку БД доставляла их уже собранными прямо с диска.
Создание объектов и массивов
Вместо классической массовой агрегации или конкатенации строк (String_agg) мы обратимся к этим функциям:
json_build_object(key, value, ...)илиjsonb_build_object(...)json_agg(...)илиjsonb_agg(...)
SELECT json_build_object('name', first_name, 'city', city) AS data
FROM customers;Вы увидите напечатанные строки, содержащие { "name": "...", "city": "..." }, что полностью соответствует требованиям.
Из таблицы «клиенты» верните данные в виде строк JSON, сопоставленных с помощью \`json_build_object\`. Сопоставьте два ключа: «имя», привязанное к «first_name», и «mail», привязанное к «электронной почте». Используйте \`AS customer_doc\` для столбца.
Показать подсказку
json_build_object('имя', first_name, 'почта', электронная почта)
Решение доступно после 3 попыток
Для каждого заказа (\`order_id\`) создайте в одном блоке все включенные в него \`product_id\`. Из таблицы «order_items» запустите «GROUP BY order_id». Затем выберите «order_id» и накопите в массиве JSON (JSON_AGG) только данные «product_id». Назовите массив \`products\`.
Показать подсказку
JSON_AGG(product_id) плюс классическая группа для сбора данных.
Решение доступно после 3 попыток