MongoDB অ্যাগ্রিগেশন পাইপলাইনে ফলাফলের রেকর্ড সংখ্যা সীমাবদ্ধ করতে $limit স্টেজ ব্যবহার করা হয়। এটি ইনপুট স্ট্রিম থেকে প্রথম Nটি ডকুমেন্ট পাস করে, বাকিগুলো ড্রপ করে।
নমুনা কালেকশন তৈরি
> db.demo240.insertOne({ "StudentName": "Chris" });
{ "acknowledged": true, "insertedId": ObjectId("5e441d969af932883c61ea3c") }
> db.demo240.insertOne({ "StudentName": "Bob" });
{ "acknowledged": true, "insertedId": ObjectId("5e441d9a9af932883c61ea3d") }
> db.demo240.insertOne({ "StudentName": "David" });
{ "acknowledged": true, "insertedId": ObjectId("5e441d9d9af932883c61ea3e") }
> db.demo240.insertOne({ "StudentName": "Mike" });
{ "acknowledged": true, "insertedId": ObjectId("5e441da19af932883c61ea3f") }
সমস্ত ডকুমেন্ট দেখানো
> db.demo240.find();
আউটপুট:
{ "_id": ObjectId("5e441d969af932883c61ea3c"), "StudentName": "Chris" }
{ "_id": ObjectId("5e441d9a9af932883c61ea3d"), "StudentName": "Bob" }
{ "_id": ObjectId("5e441d9d9af932883c61ea3e"), "StudentName": "David" }
{ "_id": ObjectId("5e441da19af932883c61ea3f"), "StudentName": "Mike" }
$limit ব্যবহার করে প্রথম ৩টি রেকর্ড
> db.demo240.aggregate([ { $limit: 3 } ]);
ফলাফল
{ "_id": ObjectId("5e441d969af932883c61ea3c"), "StudentName": "Chris" }
{ "_id": ObjectId("5e441d9a9af932883c61ea3d"), "StudentName": "Bob" }
{ "_id": ObjectId("5e441d9d9af932883c61ea3e"), "StudentName": "David" }
ব্যাখ্যা: পাইপলাইনে প্রথম ৩টি ডকুমেন্ট পাস করেছে, চতুর্থটি (Mike) বাদ দিয়েছে।
$limit এর সাথে $sort (সর্ট করে লিমিট)
নাম অনুযায়ী সর্ট করে প্রথম ২টি:
db.demo240.aggregate([
{ $sort: { StudentName: 1 } },
{ $limit: 2 }
]);
ফলাফল: Bob, Chris (অ্যালফাবেটিক্যালি প্রথম দুটি)।
$skip এবং $limit (পেজিনেশন)
পেজ ২ (প্রতি পেজ ২ রেকর্ড):
db.demo240.aggregate([
{ $sort: { StudentName: 1 } },
{ $skip: 2 },
{ $limit: 2 }
]);
সতর্কতা
$limitপাইপলাইনের শুরুর দিকে রাখলে পরপরের স্টেজ কম ডেটা প্রসেস করে (পারফরম্যান্স ভালো)।$sortএর পরে$limitরাখলে MongoDB অপ্টিমাইজেশন করে (টপ-K সর্ট)।