মডিউল পাঠ (2/2)
JSON একত্রীকরণ ফাংশন
JSON এগ্রিগেশন ফাংশন
একীকরণ দ্বিমুখী। ডাটাবেসকে JSON পার্স করার জন্য নিজেকে সীমাবদ্ধ করতে হবে না: এটি এটি তৈরি করতে পারে। কল্পনা করুন যদি আপনার API এবং Node.js কে JSON-এ নেস্টেড অবজেক্টগুলিকে সিরিয়ালাইজ করার নোংরা, নিবিড় কাজ করতে হয় না, কারণ DB সেগুলিকে ডিস্ক থেকে সরাসরি তৈরি করে দিয়েছে।
বিল্ডিং অবজেক্ট এবং অ্যারে
ক্লাসিক ভর একত্রিতকরণ বা স্ট্রিং সংযোজন (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_build_object\` দিয়ে ম্যাপ করা JSON সারি হিসাবে ডেটা ফেরত দিন। দুটি কী ম্যাপ করুন: 'নাম' 'প্রথম_নাম'-এর সাথে আবদ্ধ, এবং 'মেইল' 'ইমেল'-এর সাথে আবদ্ধ। কলামের জন্য \`AS customer_doc\` ব্যবহার করুন।
ইঙ্গিত দেখান
json_build_object('name', first_name, 'mail', email)
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
প্রতিটি অর্ডারের জন্য (\`order_id\`), এটিতে অন্তর্ভুক্ত সমস্ত \`product_id\`গুলিকে একটি একক ইউনিটে তৈরি করুন। 'order_items' টেবিল থেকে, \`GROUP BY order_id\` চালান। তারপর \`order_id\` নির্বাচন করুন এবং একটি JSON অ্যারেতে (JSON_AGG) শুধু \`product_id\` ডেটা জমা করুন। অ্যারে \`পণ্য\` নাম দিন।
ইঙ্গিত দেখান
ডেটা সংগ্রহ করার জন্য JSON_AGG(product_id) প্লাস একটি ক্লাসিক গ্রুপ।
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ