Database Tutorials $match, $group, $project এর ব্যবহার গাইড ও নোট

349

MongoDB তে অ্যাগ্রিগেশন পিপলাইন ব্যবহারের মাধ্যমে ডেটা প্রসেস এবং বিশ্লেষণ করা হয়। এই পিপলাইনে বিভিন্ন স্টেজ থাকে, এবং $match, $group, এবং $project হল তিনটি গুরুত্বপূর্ণ স্টেজ যা MongoDB তে ডেটা ফিল্টারিং, গ্রুপিং এবং প্রজেকশনের জন্য ব্যবহৃত হয়।


1. $match অপারেটর

$match অপারেটর MongoDB অ্যাগ্রিগেশন পিপলাইনে ডেটা ফিল্টার করতে ব্যবহৃত হয়। এটি কুয়েরি অপারেশন ব্যবহার করে, যাতে নির্দিষ্ট শর্ত পূর্ণ করে এমন ডকুমেন্টগুলো নির্বাচন করা হয়।

সিনট্যাক্স:

{ $match: { <query> } }
  • <query>: কুয়েরি শর্ত (যেমন: { age: { $gt: 30 } })

ব্যবহার:

  1. বয়সের ভিত্তিতে ফিল্টার:

    db.users.aggregate([
      { $match: { age: { $gt: 30 } } }
    ])
    

    এই কুয়েরি "users" কালেকশনের ডকুমেন্টগুলো থেকে সেই ডকুমেন্টগুলো ফিল্টার করবে যাদের বয়স ৩০ এর বেশি।

  2. নামের ভিত্তিতে ফিল্টার:

    db.users.aggregate([
      { $match: { name: "John" } }
    ])
    

    এই কুয়েরি "users" কালেকশনের মধ্যে name এর মান "John" থাকা ডকুমেন্টগুলো নির্বাচন করবে।


2. $group অপারেটর

$group অপারেটর MongoDB তে গ্রুপিং করতে ব্যবহৃত হয়। এটি একটি অ্যাগ্রিগেশন স্টেজ, যা নির্দিষ্ট ফিল্ডের ভিত্তিতে ডকুমেন্টগুলোকে গ্রুপ করে এবং গ্রুপের উপর বিভিন্ন ধরনের অ্যাগ্রিগেশন অপারেশন চালায়।

সিনট্যাক্স:

{ $group: { _id: <field>, <aggregationOperations> } }
  • _id: গ্রুপ করার জন্য নির্বাচিত ফিল্ড (যেমন: age, name, ইত্যাদি)
  • <aggregationOperations>: গ্রুপ করা ডেটার ওপর বিভিন্ন অপারেশন যেমন sum, avg, max, min, count ইত্যাদি।

ব্যবহার:

  1. বয়স অনুসারে গ্রুপিং এবং গননা:

    db.users.aggregate([
      { $group: { _id: "$age", totalUsers: { $sum: 1 } } }
    ])
    

    এই কুয়েরি "users" কালেকশনের ডকুমেন্টগুলো বয়স অনুসারে গ্রুপ করে এবং প্রতিটি বয়সের জন্য মোট কতজন ব্যবহারকারী আছেন তা গণনা করবে।

  2. নামের ভিত্তিতে গ্রুপিং এবং গড় বয়স নির্ধারণ:

    db.users.aggregate([
      { $group: { _id: "$name", avgAge: { $avg: "$age" } } }
    ])
    

    এই কুয়েরি "users" কালেকশনের ডকুমেন্টগুলোকে নামের ভিত্তিতে গ্রুপ করে এবং প্রতিটি নামের জন্য গড় বয়স বের করবে।


3. $project অপারেটর

$project অপারেটর MongoDB অ্যাগ্রিগেশন পিপলাইনে ডেটার প্রজেকশন (ফিল্ড নির্বাচিত করা) করতে ব্যবহৃত হয়। এটি কেবল নির্দিষ্ট ফিল্ডগুলোকেই রিটার্ন করে, যা আপনি নির্ধারণ করেন।

সিনট্যাক্স:

{ $project: { <field1>: <value1>, <field2>: <value2>, ... } }
  • <field1>, <field2>: ফিল্ডের নাম যেগুলো আপনি প্রজেক্ট করতে চান।
  • <value1>, <value2>: 1 বা 0 এর মান, যেখানে 1 মানে ফিল্ডটি অন্তর্ভুক্ত করা হবে এবং 0 মানে ফিল্ডটি বাদ দেওয়া হবে।

ব্যবহার:

  1. নির্দিষ্ট ফিল্ড প্রজেক্ট করা:

    db.users.aggregate([
      { $project: { name: 1, age: 1 } }
    ])
    

    এই কুয়েরি "users" কালেকশনের name এবং age ফিল্ডগুলোকেই রিটার্ন করবে এবং অন্যান্য ফিল্ড বাদ দিবে।

  2. নতুন ফিল্ড তৈরি করে প্রজেক্ট করা:

    db.users.aggregate([
      { $project: { name: 1, age: 1, ageInMonths: { $multiply: ["$age", 12] } } }
    ])
    

    এই কুয়েরি "users" কালেকশনের name এবং age ফিল্ডগুলো রিটার্ন করবে, সাথে ageInMonths নামের নতুন ফিল্ড তৈরি করবে, যা বয়সের ভিত্তিতে মাসে পরিণত হবে।


সারাংশ

MongoDB তে $match, $group, এবং $project অপারেটরগুলি অ্যাগ্রিগেশন পিপলাইনের গুরুত্বপূর্ণ অংশ। $match অপারেটর ব্যবহার করে ডেটা ফিল্টার করা হয়, $group অপারেটর দিয়ে ডেটাকে গ্রুপ করা হয় এবং $project অপারেটর দিয়ে ডেটার ফিল্ড প্রজেক্ট বা নির্বাচিত করা হয়। এই অপারেশনগুলির মাধ্যমে MongoDB তে ডেটা বিশ্লেষণ এবং প্রসেসিং খুবই শক্তিশালী এবং নমনীয় হয়।

Content added By
Promotion

Are you sure to start over?

Loading...