モジュールのレッスン (2/2)
JSON集計関数
JSON 集計関数
統合は双方向です。データベースは JSON の解析に限定する必要はなく、構築することもできます。 DB が構築済みのオブジェクトをディスクから直接提供したため、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": "..." } を含む行が印刷されることがわかります。
「customers」テーブルから、\`json_build_object\` でマップされたデータを JSON 行として返します。 2 つのキーをマップします: 'name' を 'first_name' にバインドし、'mail' を 'email' にバインドします。列には「AS customer_doc」を使用します。
ヒントを表示
json_build_object('名前', 名, 'メール', 電子メール)
3 回の試行後に解決策が利用可能になります
各注文 (\`order_id\`) に対して、それに含まれるすべての \`product_id\` を 1 つのユニットで構築します。 「order_items」テーブルから、\`GROUP BY order_id\` を実行します。次に、「order_id」を選択し、「product_id」データだけを JSON 配列 (JSON_AGG) に蓄積します。配列に「products」という名前を付けます。
ヒントを表示
JSON_AGG(product_id) に加えて、データを収集するための従来のグループ化。
3 回の試行後に解決策が利用可能になります