Pelajaran modul (2/2)
Fungsi agregasi JSON
Fungsi Agregasi JSON
Integrasinya bersifat dua arah. Basis data tidak harus membatasi dirinya pada penguraian JSON: ia dapat membangunnya. Bayangkan jika API dan Node.js Anda tidak perlu melakukan pekerjaan kotor dan intensif dalam membuat serial objek bersarang ke dalam JSON, karena DB mengirimkannya sudah dibuat langsung dari disk.
Membangun Objek dan Array
Alih-alih agregasi massa klasik atau penggabungan string (String_agg), kita beralih ke fungsi berikut:
json_build_object(key, value, ...)ataujsonb_build_object(...)json_agg(...)ataujsonb_agg(...)
SELECT json_build_object('name', first_name, 'city', city) AS data
FROM customers;Anda akan melihat baris dicetak berisi { "name": "...", "city": "..." }, sangat sesuai.
Dari tabel 'pelanggan', kembalikan data sebagai baris JSON, yang dipetakan dengan \`json_build_object\`. Petakan dua kunci: 'nama' terikat ke 'nama_depan', dan 'mail' terikat ke 'email'. Gunakan \`AS customer_doc\` untuk kolomnya.
Tunjukkan petunjuk
json_build_object('nama', nama_depan, 'mail', email)
Solusi tersedia setelah 3 upaya
Untuk setiap pesanan (\`id_pesanan\`), buat dalam satu unit semua \`id_produk\` yang ada di dalamnya. Dari tabel 'order_items', jalankan \`GROUP BY order_id\`. Kemudian pilih \`order_id\` dan kumpulkan ke dalam array JSON (JSON_AGG) hanya data \`product_id\`. Beri nama arraynya \`produk\`.
Tunjukkan petunjuk
JSON_AGG(product_id) ditambah grup klasik untuk mengumpulkan data.
Solusi tersedia setelah 3 upaya