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

MongoDB-এ প্রতিটি ডকুমেন্টে তিনটি ডেট কী-র সবচেয়ে পুরানো (Oldest) ডেট বের করা ($min)


MongoDB এগ্রিগেশনে $project, $min, $ifNull ব্যবহার করে একাধিক ডেট ফিল্ড থেকে সর্বোচ্চ পুরানো ডেট বের করা

MongoDB-এ একটি ডকুমেন্টে একাধিক ডেট ফিল্ড (Date1, Date2, Date3) থাকলে, সেগুলোর মধ্যে সবচেয়ে পুরানো (Oldest/Minimum) ডেট বের করতে এগ্রিগেশন পাইপলাইনে $min অপারেটর অ্যারে ফরম্যাটে ব্যবহার করা হয়।

১. কালেকশন ও ISODate ডেটা তৈরি

> db.demo353.insertOne({"Date1":new ISODate("2019-01-10"),"Date2":new ISODate("2016-01-21"),"Date3":new ISODate("2020-04-11")});
{ "acknowledged" : true, "insertedId" : ObjectId("5e568261f8647eb59e5620be") }
> db.demo353.insertOne({"Date1":new ISODate("2011-11-20"),"Date2":new ISODate("2013-12-10"),"Date3":new ISODate("2014-01-05")});
{ "acknowledged" : true, "insertedId" : ObjectId("5e56827ff8647eb59e5620bf") }

২. সব ডকুমেন্ট দেখানো

> db.demo353.find();

আউটপুট:


৩. এগ্রিগেশন কোয়েরি: তিনটি ডেটের মধ্যে Oldest (Minimum) বের করা

> db.demo353.aggregate([
  { $project: {
      OldestDate: { $min: [
        { $ifNull: ["$Date1", new Date()] },
        { $ifNull: ["$Date2", new Date()] },
        { $ifNull: ["$Date3", new Date()] }
      ]}
  }}
])

ব্যাখ্যা:

  • $min: [ ... ] - অ্যারে-র সব এলিমেন্ট থেকে ন্যূনতম (সবচেয়ে পুরানো) ডেট বের করে।
  • $ifNull: ["$Date1", new Date()] - Date1 ফিল্ড না থাকলে (null/missing) বর্তমান ডেট দিয়ে রিপ্লেস করে, যাতে $min এরর না দেয়।
  • ISODate অবজেক্ট থাকলে সরাসরি তুলনা হয়।

৪. ফলাফল

প্রথম ডকুমেন্টে: 2016-01-21 (Date2) সবচেয়ে পুরানো। দ্বিতীয় ডকুমেন্টে: 2011-11-20 (Date1) সবচেয়ে পুরানো। এটি নাল হ্যান্ডলিং সহ রবাস্ট সমাধান।


  1. MongoDB-এ সাব-ডকুমেন্টসে ফাইন্ড কোয়েরি চালানো

  2. MongoDB-তে নেস্টেড ডকুমেন্ট খোঁজা (Dot Notation)

  3. MongoDB-তে নেস্টেড ডকুমেন্ট আপডেট করা (ডট নোটেশন + পজিশনাল $)

  4. MongoDB-তে ডট নোটেশন ব্যবহার করে নেস্টেড ডকুমেন্ট আপডেট করা