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

MongoDB-এ $slice ব্যবহার করে শেষ দুই মান পাওয়া

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 খুব দ্রুত কারণ এটি কোয়ারি লেভেলে হয়, অ্যাগ্রিগেশন পাইপলাইন ছাড়া।

  1. MongoDB অ্যাগ্রিগেশন: $match এবং $and দিয়ে একাধিক শর্ত মিলিয়ে ডকুমেন্ট বের করা

  2. MongoDB-এ একটি ফিল্ডের সব মান আপডেট করা নির্দিষ্ট স্ট্রিং দিয়ে

  3. MySQL-এ অন্য কলামে দুটি ভিন্ন ভ্যালু থাকা রেকর্ড খুঁজে বের করা

  4. MySQL-এ কলামের সব মান থেকে শেষ ৩ ডিজিটের যোগফল বের করা