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

MongoDB Aggregate-এ -Infinity মান থাকলে $avg এর ফলাফল

MongoDB Aggregate-এ -Infinity মান থাকলে $avg এর আচরণ

যদি কোনো নাম্বার ফিল্ডে -Infinity (নেগেটিভ ইনফিনিটি) থাকে, তবে $avg অ্যাকুমুলেটর সেটি গণনায় অন্তর্ভুক্ত করে এবং ফলাফলও -Infinity হয়। কারণ গাণিতিকভাবে যেকোনো সংখ্যা -Infinity-এর সাথে অপারেশন করলে -Infinity হয়।

উদাহরণ: -Infinity সহ ডেটা ইনসার্ট

> db.demo5.insertOne({ "_id" : 100, "seq" : 10, "Value" : -Infinity });
{ "acknowledged" : true, "insertedId" : 100 }
> db.demo5.insertOne({ "_id" : 101, "seq" : 10, "Value" : 50 });
{ "acknowledged" : true, "insertedId" : 101 }
> db.demo5.insertOne({ "_id" : 102, "seq" : 20, "Value" : 60 });
{ "acknowledged" : true, "insertedId" : 102 }
> db.demo5.insertOne({ "_id" : 103, "seq" : 20, "Value" : 50 });
{ "acknowledged" : true, "insertedId" : 103 }

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

> db.demo5.find();

আউটপুট:

{ "_id" : 100, "seq" : 10, "Value" : -Infinity }
{ "_id" : 101, "seq" : 10, "Value" : 50 }
{ "_id" : 102, "seq" : 20, "Value" : 60 }
{ "_id" : 103, "seq" : 20, "Value" : 50 }

seq অনুযায়ী গ্রুপ করে গড় বের করা

> db.demo5.aggregate([{$group:{"_id":"$seq", "average" : {$avg : "$Value"}}}]);

আউটপুট:

{ "_id" : 20, "average" : 55 }
{ "_id" : 10, "average" : -Infinity }

ব্যাখ্যা

  • seq:10 গ্রুপে Value: -Infinity, 50 — গড় = -Infinity।
  • seq:20 গ্রুপে Value: 60, 50 — গড় = 55।
  • MongoDB $avg-এ Infinity/-Infinity হ্যান্ডেল করে না (স্কিপ করে না), সেটি প্রসেস করে ফলাফল ইনফিনিটি দেয়।

সমাধান: ইনফিনিটি মান ফিল্টার আউট করুন: {$match: {Value: {$ne: -Infinity}}} গ্রুপের আগে। অথবা $cond দিয়ে শুধু ফিনাইট মান গড় করুন।

  1. উইন্ডোজ পিসিতে গুগল অ্যাসিস্ট্যান্ট পাওয়ার উপায়

  2. macOS-এ অ্যাপল ম্যাপসে ট্রাফিক রিপোর্ট দেখুন

  3. মাইক্রোসফট ওয়ার্ড ফ্রিতে পান: বিশ্বস্ত পদ্ধতি ও টিপস

  4. Microsoft 365 ফ্রি আনলক করুন: টিপস, ট্রিকস এবং Office 365 শূন্য খরচে পাওয়ার লিগ্যাল উপায়