MongoDB-এ অ্যারের শেষ Nটি এলিমেন্ট পেতে find() মেথডের প্রজেকশনে $slice অপারেটর ব্যবহার করা সবচেয়ে সহজ এবং দ্রুত পদ্ধতি।
কলেকশন এবং ডকুমেন্ট তৈরি
> db.demo173.insertOne({"ListOfValues":[10,40,100,560,700,900]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e383a4f9e4f06af551997e4") }
সব ডকুমেন্ট দেখানো
> db.demo173.find().pretty();
আউটপুট:
{ "_id" : ObjectId("5e383a4f9e4f06af551997e4"), "ListOfValues" : [ 10, 40, 100, 560, 700, 900 ] }
শেষ দুই মান পাওয়ার কোয়ারী
find()-এর দ্বিতীয় আর্গুমেন্ট (প্রজেকশন) এ $slice: -2 ব্যবহার করা হয়েছে:
> db.demo173.find({}, { "ListOfValues": { "$slice": -2 } });
ফলাফল
{ "_id" : ObjectId("5e383a4f9e4f06af551997e4"), "ListOfValues" : [ 700, 900 ] }
ব্যাখ্যা:
{}- কোয়ারী ফিল্টার (সব ডকুমেন্ট){ "ListOfValues": { "$slice": -2 } }- প্রজেকশন: ListOfValues ফিল্ডের শেষ ২টি এলিমেন্ট রিটার্ন কর- নেগেটিভ মান (
-2) = অ্যারের শেষ থেকে計数 - পজিটিভ মান (
2) = অ্যারের শুরু থেকে計数
আরও $slice উদাহরণ:
| সিনট্যাক্স | ফলাফল (অ্যারে: [10,40,100,560,700,900]) |
|---|---|
| {$slice: 3} | [10, 40, 100] (প্রথম ৩টি) |
| {$slice: -3} | [560, 700, 900] (শেষ ৩টি) |
| {$slice: [2, 3]} | [100, 560, 700] (ইন্ডেক্স ২ থেকে ৩টি) |
| {$slice: [-3, 2]} | [560, 700] (শেষ ৩টির প্রথম ২টি) |
অ্যাগ্রিগেশনে $slice (MongoDB 3.2+):
db.demo173.aggregate([
{ $project: { ListOfValues: { $slice: ["$ListOfValues", -2] } } }
])
নোট: find()-এ প্রজেকশন $slice খুব দ্রুত কারণ এটি কোয়ারি লেভেলে হয়, অ্যাগ্রিগেশন পাইপলাইন ছাড়া।