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ব্যবহার করলে ডুপ্লিকেটও থাকবে।
ব্যবহারিক পরিস্থিতি: ইউজারের সব অর্ডার, স্টুডেন্টের সব সাবজেক্ট, ক্যাটাগরির সব প্রোডাক্ট ইত্যাদি গ্রুপ করতে।