Chuyển đến nội dung chính
Mô-đun 15 · Bài học 2 trong tổng số 257/57 trong khóa học~15 min
Bài học theo mô-đun (2/2)

Hàm tổng hợp JSON

Hàm tổng hợp JSON

Sự tích hợp là hai chiều. Cơ sở dữ liệu không phải giới hạn việc phân tích cú pháp JSON: nó có thể xây dựng nó. Hãy tưởng tượng nếu API và Node.js của bạn không phải thực hiện công việc nặng nhọc, phức tạp là tuần tự hóa các đối tượng lồng nhau thành JSON, vì DB đã phân phối chúng đã được tạo ngay từ đĩa.

Xây dựng đối tượng và mảng

Thay vì tập hợp khối lượng cổ điển hoặc nối chuỗi (String_agg), chúng tôi chuyển sang các hàm sau:

  • json_build_object(key, value, ...) hoặc jsonb_build_object(...)
  • json_agg(...) hoặc jsonb_agg(...)
SQL
SELECT json_build_object('name', first_name, 'city', city) AS data
FROM customers;

Bạn sẽ thấy các hàng được in có chứa { "name": "...", "city": "..." }, hoàn toàn tuân thủ.

tập thể dục#sql.m15.l2.e1
Nỗ lực: 0Đang tải…

Từ bảng 'khách hàng', trả về dữ liệu dưới dạng hàng JSON, được ánh xạ với \`json_build_object\`. Ánh xạ hai khóa: 'name' được liên kết với 'first_name' và 'mail' được liên kết với 'email'. Sử dụng \`AS customer_doc\` cho cột.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

json_build_object('tên', first_name, 'thư', email)

Giải pháp khả dụng sau 3 lần thử

tập thể dục#sql.m15.l2.e2
Nỗ lực: 0Đang tải…

Đối với mỗi đơn hàng (\`order_id\`), hãy xây dựng tất cả \`product_id\` trong một đơn vị duy nhất. Từ bảng 'order_items', hãy chạy \`GROUP BY order_id\`. Sau đó, chọn \`order_id\` và tích lũy thành một mảng JSON (JSON_AGG) chỉ dữ liệu \`product_id\`. Đặt tên cho mảng \`products\`.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

JSON_AGG(product_id) cộng với một nhóm cổ điển để thu thập dữ liệu.

Giải pháp khả dụng sau 3 lần thử