MongoDB-এ sort() এবং limit() ব্যবহার করে বর্তমান এবং আগের ডকুমেন্ট পাওয়া
MongoDB-এ নির্দিষ্ট আইডির ডকুমেন্ট এবং তার আগের (Previous) ডকুমেন্ট একসাথে বের করতে sort({_id: -1}) (ডেসেন্ডিং) এবং limit(2) ব্যবহার করা হয়। এটি টাইম-সিরিজ বা লগ ডেটা-এ খুব কাজে লাগে।
১. কালেকশন ও ক্রমাগত আইডি-তে ডেটা তৈরি
> db.demo360.insertOne({id:101,"Name":"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e56a10c54a481fef8ec7a15") }
> db.demo360.insertOne({id:102,"Name":"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e56a11254a481fef8ec7a16") }
> db.demo360.insertOne({id:103,"Name":"Bob"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e56a11a54a481fef8ec7a17") }
> db.demo360.insertOne({id:104,"Name":"Mike"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e56a11f54a481fef8ec7a18") }
২. সব ডকুমেন্ট দেখানো
> db.demo360.find();
আউটপুট:
৩. কোয়েরি: id 102-এর সাথে তার আগের ডকুমেন্ট (id 101) বের করা
> db.demo360.find({ id: { $lte: 102 } }, {id:1, Name: 1 }).sort({_id: -1}).limit(2);ব্যাখ্যা:
{id: {$lte: 102}}- id 102 বা তার চেয়ে ছোট (আগের) ডকুমেন্টগুলো ফিল্টার।{id:1, Name: 1}- প্রজেকশন: শুধু id এবং Name ফিল্ড।.sort({_id: -1})- _id ডেসেন্ডিং (সাম্প্রতিক আগে) সর্ট। MongoDB _id-তে টাইমস্ট্যাম্প থাকে।.limit(2)- শুধু ২টি ডকুমেন্ট (বর্তমান + আগের) নেয়।
৪. ফলাফল
আউটপুটে প্রথমে id 102 (বর্তমান), তারপর id 101 (পূর্ববর্তী) আসেছে কারণ সর্ট ডেসেন্ডিং। এটি "Previous/Next" পেজিনেশন বা কম্পারিজনের জন্য আদর্শ।