MongoDB-তে অগ리게শন ফ্রেমওয়ার্ক ব্যবহার করে টপ N সারি কোয়েরি করা
MongoDB-তে টপ N সারি পেতে অগ리게শন ফ্রেমওয়ার্কের $sort, $limit এবং $match স্টেজগুলো ব্যবহার করতে হয়।
ধাপ ১: ডকুমেন্টসহ কালেকশন তৈরি করুন
> db.topNRowsDemo.insertOne({"StudentName":"Larry","Score":78});
{ "acknowledged" : true, "insertedId" : ObjectId("5ca26eee6304881c5ce84b91") }
> db.topNRowsDemo.insertOne({"StudentName":"Chris","Score":45});
{ "acknowledged" : true, "insertedId" : ObjectId("5ca26ef66304881c5ce84b92") }
> db.topNRowsDemo.insertOne({"StudentName":"Mike","Score":65});
{ "acknowledged" : true, "insertedId" : ObjectId("5ca26efe6304881c5ce84b93") }
> db.topNRowsDemo.insertOne({"StudentName":"Adam","Score":55});
{ "acknowledged" : true, "insertedId" : ObjectId("5ca26f066304881c5ce84b94") }
> db.topNRowsDemo.insertOne({"StudentName":"John","Score":86});
{ "acknowledged" : true, "insertedId" : ObjectId("5ca26f0f6304881c5ce84b95") }
ধাপ ২: সব ডকুমেন্ট প্রদর্শন করুন
> db.topNRowsDemo.find().pretty();
আউটপুট:
{
"_id" : ObjectId("5ca26eee6304881c5ce84b91"),
"StudentName" : "Larry",
"Score" : 78
}
{
"_id" : ObjectId("5ca26ef66304881c5ce84b92"),
"StudentName" : "Chris",
"Score" : 45
}
{
"_id" : ObjectId("5ca26efe6304881c5ce84b93"),
"StudentName" : "Mike",
"Score" : 65
}
{
"_id" : ObjectId("5ca26f066304881c5ce84b94"),
"StudentName" : "Adam",
"Score" : 55
}
{
"_id" : ObjectId("5ca26f0f6304881c5ce84b95"),
"StudentName" : "John",
"Score" : 86
}
ধাপ ৩: টপ N সারি কোয়েরি করুন
> db.topNRowsDemo.aggregate([
{$sort: {StudentName: 1}},
{$limit: 5},
{$match: {Score: {$gt: 65}}}
]).pretty();
ফলাফল:
{
"_id" : ObjectId("5ca26f0f6304881c5ce84b95"),
"StudentName" : "John",
"Score" : 86
}
{
"_id" : ObjectId("5ca26eee6304881c5ce84b91"),
"StudentName" : "Larry",
"Score" : 78
}
ব্যাখ্যা: এই কোয়েরিটি প্রথমে StudentName অনুযায়ী সর্ট করে (১ = আসেন্ডিং), তারপর ৫টি ডকুমেন্ট লিমিট করে, এবং সর্বশেষে Score ৬৫-এর চেয়ে বড় olan ডকুমেন্টগুলো ফিল্টার করে। ফলাফলে John (৮৬) এবং Larry (৭৮) দুটি ডকুমেন্ট পাওয়া গেছে।
টিপস: সঠিক টপ N রেজাল্ট পেতে সাধারণত প্রথমে $sort (যে ফিল্ডে টপ চাইবেন তার অনুযায়ী), তারপর $limit ব্যবহার করা উচিত।