কম্পিউটার টিউটোরিয়াল

MongoDB-এ সাধারণ ফিল্ড ভিত্তিক করে ডকুমেন্ট গ্রুপ করার পদ্ধতি

MongoDB-এ একই ফিল্ড মান (যেমন UserId) वाली ডকুমেন্টগুলো গ্রুপ করে অন্যান্য ফিল্ডের মানগুলো একটি অ্যারেতে সংগ্রহ করতে এগ্রিগেশন পাইপলাইন ($group, $addToSet) ব্যবহার করুন।

উদাহরণ

সাধারণ UserId সহ ডকুমেন্ট তৈরি করুন:

> db.findDocumentWithCommonFieldsDemo.insertOne({ "UserId": 1, "UserName": "Carol" });
{ "acknowledged" : true, "insertedId" : ObjectId("5cdf8ebebf3115999ed51200") }

> db.findDocumentWithCommonFieldsDemo.insertOne({ "UserId": 2, "UserName": "David" });
{ "acknowledged" : true, "insertedId" : ObjectId("5cdf8ebebf3115999ed51201") }

> db.findDocumentWithCommonFieldsDemo.insertOne({ "UserId": 1, "UserName": "Sam" });
{ "acknowledged" : true, "insertedId" : ObjectId("5cdf8ebebf3115999ed51202") }

সকল ডকুমেন্ট দেখুন:

> db.findDocumentWithCommonFieldsDemo.find();

আউটপুট:

{ "_id" : ObjectId("5cdf8ebebf3115999ed51200"), "UserId" : 1, "UserName" : "Carol" }
{ "_id" : ObjectId("5cdf8ebebf3115999ed51201"), "UserId" : 2, "UserName" : "David" }
{ "_id" : ObjectId("5cdf8ebebf3115999ed51202"), "UserId" : 1, "UserName" : "Sam" }

UserId ভিত্তিক গ্রুপ করে UserName গুলো অ্যারে আকারে বের করা

> db.findDocumentWithCommonFieldsDemo.aggregate([
    { $group: { _id: "$UserId", "UserDetails": { $addToSet: "$UserName" } } }
]);

আউটপুট:

{ "_id" : 2, "UserDetails" : [ "David" ] }
{ "_id" : 1, "UserDetails" : [ "Sam", "Carol" ] }

ব্যাখ্যা:

  • $group: { _id: "$UserId" } — UserId অনুযায়ী গ্রুপ করা হয়েছে।
  • $addToSet: "$UserName" — গ্রুপের সব UserName ইউনিকভাবে একটি সেট (অ্যারে) এ জমা করা হয়েছে। ডুপ্লিকেট হলে একবারই থাকবে।
  • $push ব্যবহার করলে ডুপ্লিকেটও থাকবে।

ব্যবহারিক পরিস্থিতি: ইউজারের সব অর্ডার, স্টুডেন্টের সব সাবজেক্ট, ক্যাটাগরির সব প্রোডাক্ট ইত্যাদি গ্রুপ করতে।

  1. MongoDB-তে অ্যারে সহ গ্রুপ বাই রেজাল্ট রিট্রিভ

  2. MongoDB-এ অ্যারে-ভিত্তিক ফিল্ডের সব ডকুমেন্ট জুড়ে ইউনিক আইটেম গণনা করা

  3. MongoDB-এ অ্যারে ফিল্ডে সব এলিমেন্ট ম্যাচ করা ($all অপারেটর)

  4. MongoDB এগ্রিগেশন: একাধিক ফিল্ড দিয়ে কাউন্ট করা