MongoDB-এ অ্যারে ফিল্ড থেকে নির্দিষ্ট সংখ্যক এলিমেন্ট রিটার্ন করতে অ্যাগ্রিগেশন পাইপলাইনে $project স্টেজের সাথে $slice অপারেটর ব্যবহার করা হয়।
সিনট্যাক্স
db.collection.aggregate([
{ $project: { fieldName: { $slice: [ "$fieldName", numberOfElements ] } } }
]);
নমুনা কালেকশন তৈরি
> db.demo75.insertOne({ "Name": ["Sam", "Mike", "Carol", "David", "Bob", "John"] });
{ "acknowledged": true, "insertedId": ObjectId("5e2bcd7671bf0181ecc42278") }
ডকুমেন্ট দেখানো
> db.demo75.find();
আউটপুট:
{ "_id": ObjectId("5e2bcd7671bf0181ecc42278"), "Name": [ "Sam", "Mike", "Carol", "David", "Bob", "John" ] }
প্রথম ৪টি এলিমেন্ট রিটার্ন করা
> db.demo75.aggregate([
{ $project: { Name: { $slice: [ "$Name", 4 ] } } }
]);
ফলাফল
{ "_id": ObjectId("5e2bcd7671bf0181ecc42278"), "Name": [ "Sam", "Mike", "Carol", "David" ] }
ব্যাখ্যা: $slice: [ "$Name", 4 ] - Name অ্যারের প্রথম ৪টি এলিমেন্ট রিটার্ন করে।
$slice এর বিভিন্ন ব্যবহার
| সিনট্যাক্স | ফলাফল |
|---|---|
{ $slice: [ "$array", 3 ] } | প্রথম ৩টি এলিমেন্ট |
{ $slice: [ "$array", -3 ] } | শেষ ৩টি এলিমেন্ট |
{ $slice: [ "$array", 2, 3 ] } | ইনডেক্স ২ থেকে ৩টি এলিমেন্ট (skip 2, limit 3) |
{ $slice: [ "$array", -5, 3 ] } | শেষ ৫টির মধ্য থেকে প্রথম ৩টি |
find() এ projection-এ $slice (MongoDB ৪.৪+)
db.demo75.find({}, { Name: { $slice: 4 } });
অ্যাগ্রিগেশন ছাড়া সরাসরি find-এও সম্ভব (নতুন ভার্সনে)।