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

MongoDB-এ দুই তারিখের মাঝপথে ফিল্ড কাউন্ট এবং সাম করুন

MongoDB-এ দুই তারিখের মাঝপথে একটি ফিল্ডের মান যোগ (sum) এবং রেকর্ড সংখ্যা (count) জানতে অ্যাগ্রিগেশন পাইপলাইনে $match, $gte, $lte এবং $group স্টেজ ব্যবহার করা হয়।

নমুনা কালেকশন তৈরি

> db.countandsumdemo.insertOne({ "Value": 10, "created_at": ISODate('2019-10-11') });
{ "acknowledged": true, "insertedId": ObjectId("5e038e6df5e889d7a51994fa") }

> db.countandsumdemo.insertOne({ "Value": 50, "created_at": ISODate('2019-01-31') });
{ "acknowledged": true, "insertedId": ObjectId("5e038e77f5e889d7a51994fb") }

> db.countandsumdemo.insertOne({ "Value": 100, "created_at": ISODate('2019-06-31') });
{ "acknowledged": true, "insertedId": ObjectId("5e038e8af5e889d7a51994fc") }

নোট: ২০১৯-০৬-৩১ অবৈধ তারিখ, MongoDB এটি ২০১৯-০৭-০১-এ কনভার্ট করে দিয়েছে।

সমস্ত ডকুমেন্ট প্রদর্শন

> db.countandsumdemo.find().pretty();

আউটপুট:

{ "_id": ObjectId("5e038e6df5e889d7a51994fa"), "Value": 10, "created_at": ISODate("2019-10-11T00:00:00Z") }
{ "_id": ObjectId("5e038e77f5e889d7a51994fb"), "Value": 50, "created_at": ISODate("2019-01-31T00:00:00Z") }
{ "_id": ObjectId("5e038e8af5e889d7a51994fc"), "Value": 100, "created_at": ISODate("2019-07-01T00:00:00Z") }

দুই তারিখের মাঝপথে কাউন্ট এবং সাম

২০১৯-০৫-০১ থেকে ২০১৯-১২-৩১ পর্যন্ত:

> db.countandsumdemo.aggregate([
  { 
    $match: { 
      created_at: { 
        $gte: new Date('2019-05-01'), 
        $lte: new Date('2019-12-31') 
      } 
    } 
  },
  { 
    $group: { 
      _id: null, 
      SUM: { $sum: "$Value" }, 
      COUNT: { $sum: 1 } 
    } 
  }
]);

ফলাফল

{ "_id": null, "SUM": 110, "COUNT": 2 }

ব্যাখ্যা:

  • $match - ২০১৯-০৫-০১ থেকে ২০১৯-১২-৩১ পর্যন্ত তারিখের ডকুমেন্ট ফিল্টার করে (Value: 10 এবং 100)।
  • $group - _id: null দিয়ে সব গ্রুপে একসাথে, $sum: "$Value" দিয়ে Value ফিল্ডের যোগফল (১১০), $sum: 1 দিয়ে রেকর্ড সংখ্যা (২) বের করে।

টিপস

created_at ফিল্ডে ইন্ডেক্স থাকলে কোয়েরি দ্রুত হবে। ডেট রেঞ্জ কোয়েরির জন্য কম্পাউন্ড ইন্ডেক্স ব্যবহার করুন।

  1. MongoDB-এ ফিল্ড খুঁজে সেটি ডিলিট করা ($exists ও $unset)

  2. MongoDB-এ দুটি তারিখের মাঝপথে ও নির্দিষ্ট ফিল্ড মান দিয়ে ডেটা গ্রুপ করে সম ও কাউন্ট বের করা

  3. MongoDB-এ NumberLong(x) এবং NumberLong("x") এর পার্থক্য

  4. MongoDB-এ কার্সর ইটারেশন কাউন্ট করা