কম্পিউটার টিউটোরিয়াল

MongoDB-এ অ্যারে-র সাব-কলেকশন ক্যাপ্ড (Capped) করার পরিবর্তে $slice ব্যবহার


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 ফিল্ডে পাওয়া গেছে। এটি খুব দক্ষ এবং ফ্লেক্সিবল।


  1. MongoDB-এ নেস্টেড অ্যারে অ্যাগ্রিগেট করার পদ্ধতি

  2. MongoDB-তে সাবডকুমেন্টের অ্যারে কুয়েরি

  3. MongoDB-এ নেস্টেড অ্যারে সর্ট করা

  4. MongoDB-এ অ্যারেতে ডুপ্লিকেট চেক করা