MongoDB-এ find()-এর প্রজেকশনে $slice অপারেটর ব্যবহার করে একটি অ্যারে ফিল্ড থেকে নির্দিষ্ট সংখ্যক এলিমেন্ট বাদ দিয়ে (skip) এবং নির্দিষ্ট সংখ্যক এলিমেন্ট রিটার্ন করা (limit) যায়।
উদাহরণ: কালেকশন ও ডেটা তৈরি
> db.demo693.insertOne({ Values: [10, 746, 736, 283, 7363, 424, 3535] });
{ "acknowledged" : true, "insertedId" : ObjectId("5ea58a04ece4e5779399c07b") }
> db.demo693.insertOne({ Values: [100, 200, 300, 100, 500, 700, 900, 30000, 40003, 45999] });
{ "acknowledged" : true, "insertedId" : ObjectId("5ea58a1eece4e5779399c07c") }
সব ডকুমেন্ট দেখানো
> db.demo693.find();
আউটপুট:
{ "_id" : ObjectId("5ea58a04ece4e5779399c07b"), "Values" : [ 10, 746, 736, 283, 7363, 424, 3535 ] }
{ "_id" : ObjectId("5ea58a1eece4e5779399c07c"), "Values" : [ 100, 200, 300, 100, 500, 700, 900, 30000, 40003, 45999 ] }
$slice দিয়ে প্রথম ৪টি বাদ দিয়ে পরের ৩টি দেখানো
> db.demo693.find({}, { Values: { $slice: [4, 3] } });
সিনট্যাক্স ব্যাখ্যা
$slice: [skip, limit]—skipসংখ্যক এলিমেন্ট বাদ দিয়ে,limitসংখ্যক এলিমেন্ট রিটার্ন করুন।[4, 3]— প্রথম ৪টি বাদ, পরের ৩টি নিন।
আউটপুট
{ "_id" : ObjectId("5ea58a04ece4e5779399c07b"), "Values" : [ 7363, 424, 3535 ] }
{ "_id" : ObjectId("5ea58a1eece4e5779399c07c"), "Values" : [ 500, 700, 900 ] }
$slice এর অন্যান্য ব্যবহার
| সিনট্যাক্স | অর্থ |
|---|---|
{ $slice: 3 } | প্রথম ৩টি এলিমেন্ট (limit 3) |
{ $slice: -3 } | শেষ ৩টি এলিমেন্ট |
{ $slice: [2, 5] } | ২টি বাদ দিয়ে ৫টি (ইন্ডেক্স ২ থেকে ৫টি)۔ |
{ $slice: [-5, 3] } | শেষ থেকে ৫টি বাদ দিয়ে ৩টি (শেষ ৩টি ব্যতীত ৩টি)۔ |
Aggregation-এ $slice (MongoDB 3.2+)
db.demo693.aggregate([
{ $project: { Values: { $slice: ["$Values", 4, 3] } } }
])
মূল পয়েন্টসমূহ
$sliceশুধু প্রজেকশনে (find-এর দ্বিতীয় আর্গুমেন্ট বা $project-এ) কাজ করে।- নেগেটিভ skip অ্যারে শেষ থেকে গণনা করে।
- অ্যারে ছোট হলে (skip > length) খালি অ্যারে রিটার্ন করবে।
- পেজিনেশন (pagination) অ্যারে ডেটার জন্য উপযোগী।