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

MongoDB-এ সবচেয়ে দীর্ঘ সময়কাল (Longest Time Period) वाले অবজেক্ট খুঁজে বের করা


MongoDB এগ্রিগেশনে $addFields, $subtract, $toDate, $sort, $limit ব্যবহার করে সর্বোচ্চ সময়কাল বের করা

MongoDB-এ প্রতিটি ডকুমেন্টে শুরু (startDate) এবং শেষ (endDate) সময় থাকলে, সবচেয়ে দীর্ঘ সময়কাল (Duration) वाले ডকুমেন্ট খুঁজে বের করতে এগ্রিগেশন পাইপলাইনে ডেট পার্সিং, গাণিতিক অপারেশন এবং সোর্টিং কম্বাইন করা হয়।

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

> db.demo344.insertOne({"startDate":"2020-02-24 10:50:00", "endDate":"2020-02-24 11:50:00"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e53f52cf8647eb59e5620aa") }
> db.demo344.insertOne({"startDate":"2020-02-24 08:00:00", "endDate":"2020-02-24 11:50:50"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e53f53df8647eb59e5620ab") }

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

> db.demo344.find();

আউটপুট:


৩. এগ্রিগেশন কোয়েরি: সর্বোচ্চ সময়কাল वाले ডকুমেন্ট বের করা

> db.demo344.aggregate([
  { $addFields: {
      longestTime: { $subtract: [ { $toDate: "$endDate" }, { $toDate: "$startDate" } ] }
  }},
  { $sort: { longestTime: -1 } },
  { $limit: 1 }
])

স্টেজ ব্যাখ্যা:

  1. $addFields - নতুন ফিল্ড longestTime যোগ করে। $toDate স্ট্রিংকে ডেট অবজেক্টে রূপান্তর করে। $subtract দিয়ে পার্থক্য (মিলিসেকেন্ডে) বের করে।
  2. $sort: {longestTime: -1} - সময়কাল ডেসেন্ডিং অর্ডারে সর্ট (সবচেয়ে বড়টি আগে)।
  3. $limit: 1 - শুধু প্রথম (সর্বোচ্চ) ডকুমেন্ট রিটার্ন।

৪. ফলাফল

{ "_id" : ObjectId("5e53f53df8647eb59e5620ab"), "startDate" : "2020-02-24 08:00:00", "endDate" : "2020-02-24 11:50:50", "longestTime" : NumberLong(13850000) }

দ্বিতীয় ডকুমেন্টটির সময়কাল: ৩ ঘন্টা ৫০ মিনিট ৫০ সেকেন্ড = ১৩,৮৫০,০০০ মিলিসেকেন্ড। প্রথমটি: ১ ঘন্টা = ৩,৬০০,০০০ মিলিসেকেন্ড।


  1. MongoDB-এ সাব-ডকুমেন্টের শর্ত অনুযায়ী ডকুমেন্ট কোয়েরি করা

  2. MongoDB-তে LIMIT ব্যবহার করে কোয়ারি করার পদ্ধতি

  3. MongoDB-এ নির্দিষ্ট ডেট ফরম্যাটে কোয়েরি ফিল্টার করা

  4. MongoDB-এ bulkWrite() দিয়ে এক কোয়েরিতে একাধিক ডকুমেন্ট আপডেট করা