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

MongoDB অগ্রেশন ফ্রেমওয়ার্কে অ্যারের দৈর্ঘ্য অনুযায়ী সর্ট করা

MongoDB অগ্রেশন পাইপলাইনে অ্যারের সাইজ অনুযায়ী সর্টিং

ডকুমেন্টের অ্যারে ফিল্ডের লেন্থ (সাইজ) অনুযায়ী সর্ট করার জন্য অগ্রেশন পাইপলাইনে $unwind, $group (with $sum) এবং $sort ব্যবহার করা হয়।

উদাহরণ: ছাত্রের লিস্ট সহ ডকুমেন্ট তৈরি

> db.demo33.insertOne({"ListOfStudent":["Chris","Bob"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e17556ccfb11e5c34d898ca") }
> db.demo33.insertOne({"ListOfStudent":["David","Adam","Mike"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e17557acfb11e5c34d898cb") }
> db.demo33.insertOne({"ListOfStudent":["Carol","Sam","John","Robert"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e1755a3cfb11e5c34d898cc") }

সমস্ত ডকুমেন্ট

> db.demo33.find();
{ "_id" : ObjectId("5e17556ccfb11e5c34d898ca"), "ListOfStudent" : [ "Chris", "Bob" ] }
{ "_id" : ObjectId("5e17557acfb11e5c34d898cb"), "ListOfStudent" : [ "David", "Adam", "Mike" ] }
{ "_id" : ObjectId("5e1755a3cfb11e5c34d898cc"), "ListOfStudent" : [ "Carol", "Sam", "John", "Robert" ] }

অগ্রেশন কুয়েরি: অ্যারের লেন্থ অনুযায়ী ডিসেন্ডিং সর্ট

> db.demo33.aggregate({$unwind:"$ListOfStudent"}, { $group : {_id:'$_id', ct:{$sum:1}}}, { $sort :{ ct: -1}} );

ফলাফল

{ "_id" : ObjectId("5e1755a3cfb11e5c34d898cc"), "ct" : 4 }
{ "_id" : ObjectId("5e17557acfb11e5c34d898cb"), "ct" : 3 }
{ "_id" : ObjectId("5e17556ccfb11e5c34d898ca"), "ct" : 2 }

পাইপলাইন ব্যাখ্যা

  1. $unwind: "$ListOfStudent": অ্যারে ডিকনস্ট্রাক্ট করে প্রতিটি এলিমেন্ট আলাদা ডকুমেন্ট বানায়।
  2. $group: {_id: '$_id', ct: {$sum: 1}}: মূল ডকুমেন্টের _id দিয়ে গ্রুপ করে এবং কাউন্ট (ct) বের করে।
  3. $sort: {ct: -1}: কাউন্ট অনুযায়ী ডিসেন্ডিং সর্ট (সর্বোচ্চ উপরে)।

আধুনিক বিকল্প (MongoDB 4.4+)

$size অপারেটর ব্যবহার করে সরাসরি:

db.demo33.aggregate([
  { $project: { ListOfStudent: 1, count: { $size: "$ListOfStudent" } } },
  { $sort: { count: -1 } }
])

এটি আরও সহজ এবং পারফরম্যান্সের দৃষ্টিতে ভালো।

  1. MongoDB Aggregation-এ নির্দিষ্ট ফিল্ড মান মэтচ করা ($match স্টেজ)

  2. MongoDB-তে অ্যারের ভ্যালু অনুযায়ী কালেকশন সর্ট করা (aggregate + $unwind + $sort)

  3. MongoDB-তে অ্যাগ্রিগেশন দিয়ে অ্যারে এলিমেন্টের গড় (Average) বের করা ($avg)

  4. MongoDB অ্যাগ্রিগেশন: অ্যারে এলিমেন্টের সাবসেট যোগ করা ($first + $sum + $subtract)