MongoDB-এ অ্যারে-র নির্দিষ্ট সংখ্যক এলিমেন্ট দেখানোর জন্য $slice ব্যবহার
MongoDB-এ ক্যাপ্ড কালেকশন (Capped Collection) শুধু টপ-লেভেল ডকুমেন্টের জন্য কাজ করে, অ্যারে-র ভেতরের সাব-কলেকশন বা সাব-অ্যারে için কাজ করে না। অ্যারে-র প্রথম কিছু এলিমেন্ট পেতে $slice অপারেটর ব্যবহার করা উচিত।
১. কালেকশন ও নমুনা ডেটা তৈরি
> db.demo319.insertOne({"Scores":[100,345,980,890]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e50ecf6f8647eb59e562064") }
> db.demo319.insertOne({"Scores":[903,10004,84575,844]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e50ed01f8647eb59e562065") }
২. সব ডকুমেন্ট দেখানো
> db.demo319.find().pretty();
আউটপুট:
{
"_id" : ObjectId("5e50ecf6f8647eb59e562064"),
"Scores" : [ 100, 345, 980, 890 ]
}
{
"_id" : ObjectId("5e50ed01f8647eb59e562065"),
"Scores" : [ 903, 10004, 84575, 844 ]
}
৩. $slice ব্যবহার করে প্রথম ২টি স্কোর দেখা
> db.demo319.aggregate([
{ $project: { TwoScores: { $slice: [ "$Scores", 2 ] } } }
])
ব্যাখ্যা:
$slice: [ "$Scores", 2 ]-Scoresঅ্যারে-র প্রথম ২টি এলিমেন্ট নেওয়া।- নেগেটিভ সংখ্যা দিলে (যেমন -2) শেষের ২টি এলিমেন্ট मिलে।
৪. ফলাফল
{ "_id" : ObjectId("5e50ecf6f8647eb59e562064"), "TwoScores" : [ 100, 345 ] }
{ "_id" : ObjectId("5e50ed01f8647eb59e562065"), "TwoScores" : [ 903, 10004 ] }
প্রতিটি ডকুমেন্টের Scores অ্যারে-র প্রথম ২টি মান TwoScores ফিল্ডে পাওয়া গেছে। এটি খুব দক্ষ এবং ফ্লেক্সিবল।