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

MongoDB-এ গড় (Average) এর চেয়ে বড় মান वाले ডকুমেন্ট বের করা

MongoDB-এ একটি ফিল্ডের গড় মান বের করে, তার চেয়ে বড় মান বিশিষ্ট ডকুমেন্টগুলো খোঁজার জন্য Aggregation ($avg) এবং find() (with $gt) কম্বাইন করে ব্যবহার করা হয়।

উদাহরণ: কালেকশন ও ডেটা তৈরি

> db.demo552.insertOne({values: 10});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8e3b1c9e5f92834d7f05ea") }
> db.demo552.insertOne({values: 50});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8e3b1f9e5f92834d7f05eb") }
> db.demo552.insertOne({values: 40});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8e3b289e5f92834d7f05ec") }

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

> db.demo552.find();

আউটপুট:

{ "_id" : ObjectId("5e8e3b1c9e5f92834d7f05ea"), "values" : 10 }
{ "_id" : ObjectId("5e8e3b1f9e5f92834d7f05eb"), "values" : 50 }
{ "_id" : ObjectId("5e8e3b289e5f92834d7f05ec"), "values" : 40 }

গড় মান বের করে তার চেয়ে বড় ডকুমেন্ট খোঁজা

> var findAvg = db.demo552.aggregate([
    { "$group": { "_id": "null", Average: { "$avg": "$values" } } }
]).toArray()[0]["Average"];

> db.demo552.find({ "values": { "$gt": findAvg } })

কোড ব্যাখ্যা

  1. Aggregation: $group দিয়ে সব ডকুমেন্টের values ফিল্ডের গড় ($avg) বের করা হয়। .toArray()[0]["Average"] দিয়ে ফলাফলটি ভেরিয়েবলে সংরক্ষণ করা হয়। (গড় = (10+50+40)/3 = 33.33)
  2. Find: { "values": { "$gt": findAvg } } — গড় মানের চেয়ে বড় ($gt) values वाले ডকুমেন্ট বের করা হয়।

আউটপুট

{ "_id" : ObjectId("5e8e3b1f9e5f92834d7f05eb"), "values" : 50 }
{ "_id" : ObjectId("5e8e3b289e5f92834d7f05ec"), "values" : 40 }

১০ গড়ের চেয়ে ছোট, তাই বাদ পড়েছে।

আধুনিক বিকল্প: একক Aggregation Pipeline (MongoDB 3.6+)

দুটি আলাদা কোয়েরি না লিখে একটি পাইপলাইনে করতে পারেন $lookup বা $expr দিয়ে, তবে উপরের পদ্ধতিটি সহজ ও বোঝা সহজ।

মূল পয়েন্টসমূহ

  • $avg Aggregation-এ গড় মান বের করতে ব্যবহৃত হয়।
  • $gt (Greater Than) অপারেটর নির্দিষ্ট মানের চেয়ে বড় মান ফিল্টার করতে ব্যবহৃত হয়।
  • দু-ধাপের পদ্ধতি: ১) গড় বের করুন, ২) সেটি ব্যবহার করে ফিল্টার করুন।
  • বড় ডেটাসেটে এগরিগেশন পাইপলাইনে $bucket বা $percentileও ব্যবহার করা যায়।
  1. MongoDB-এ প্রতিটি গ্রুপে সর্বোচ্চ মান বের করা

  2. MongoDB-এ নির্দিষ্ট ফিল্ডের সব ডকুমেন্টের মান যোগ করা (aggregate $sum)

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

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