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

MongoDB-তে কলামের সর্বোচ্চ নমেরিক মান বের করার পদ্ধতি


MongoDB-তে $not এবং $type অপারেটর ব্যবহার করে কলামের সর্বোচ্চ নমেরিক মান বের করা

MongoDB-তে কোনো ফিল্ডে মিক্সড ডেটা টাইপ (স্ট্রিং এবং নম্বর) থাকলে, শুধু নমেরিক ভ্যালুগুলো থেকে সর্বোচ্চ মান বের করতে $not এবং $type অপারেটর ব্যবহার করা হয়।

ধাপ ১: ডকুমেন্টসহ কালেকশন তৈরি করুন

> db.highestNumericValueOfAColumnDemo.insertOne(
  { "StudentName": "John", "StudentMathMarks": 69 }
);
{ "acknowledged" : true, "insertedId" : ObjectId("5cba05727219729fde21ddb1") }

> db.highestNumericValueOfAColumnDemo.insertOne(
  { "StudentName": "Carol", "StudentMathMarks": "89" }
);
{ "acknowledged" : true, "insertedId" : ObjectId("5cba059d7219729fde21ddb2") }

> db.highestNumericValueOfAColumnDemo.insertOne(
  { "StudentName": "Chris", "StudentMathMarks": 82 }
);
{ "acknowledged" : true, "insertedId" : ObjectId("5cba059d7219729fde21ddb3") }

> db.highestNumericValueOfAColumnDemo.insertOne(
  { "StudentName": "John", "StudentMathMarks": "100" }
);
{ "acknowledged" : true, "insertedId" : ObjectId("5cba059d7219729fde21ddb4") }

লক্ষ্য করুন: Carol এবং John-এর ২য় রেকর্ডে StudentMathMarks স্ট্রিং টাইপে ("89", "100")।

ধাপ ২: সব ডকুমেন্ট প্রদর্শন করুন

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

আউটপুট:

{
  "_id" : ObjectId("5cba05727219729fde21ddb1"),
  "StudentName" : "John",
  "StudentMathMarks" : 69
}
{
  "_id" : ObjectId("5cba059d7219729fde21ddb2"),
  "StudentName" : "Carol",
  "StudentMathMarks" : "89"
}
{
  "_id" : ObjectId("5cba059d7219729fde21ddb3"),
  "StudentName" : "Chris",
  "StudentMathMarks" : 82
}
{
  "_id" : ObjectId("5cba059d7219729fde21ddb4"),
  "StudentName" : "John",
  "StudentMathMarks" : "100"
}

ধাপ ৩: শুধু নমেরিক ভ্যালু থেকে সর্বোচ্চ মান বের করুন

> db.highestNumericValueOfAColumnDemo.find({StudentMathMarks: {$not: {$type: 2}}}).sort({StudentMathMarks: -1}).limit(1).pretty();

ফলাফল:

{
  "_id" : ObjectId("5cba059d7219729fde21ddb3"),
  "StudentName" : "Chris",
  "StudentMathMarks" : 82
}

ব্যাখ্যা:

  • {$type: 2} - টাইপ ২ মানে স্ট্রিং (String) টাইপ
  • {$not: {$type: 2}} - স্ট্রিং টাইপ নয় এমন ডকুমেন্ট (অর্থাৎ নমেরিক টাইপ: Integer, Double, Long)
  • .sort({StudentMathMarks: -1}) - ডিসেন্ডিং অর্ডারে সর্ট (সর্বোচ্চ উপরে)
  • .limit(1) - শুধু প্রথম ডকুমেন্ট (সর্বোচ্চ)
  • ফলাফল: Chris (৮২) - কারণ ৮৯ এবং ১০০ স্ট্রিং টাইপে থাকায় সেগুলো বাদ পড়েছে

মongoDB BSON টাইপ কোড:

  • ১ = Double
  • ২ = String
  • ৩ = Object
  • ৪ = Array
  • ৮ = Boolean
  • ১৬ = Int32
  • ১৮ = Int64 (Long)
  • ১৯ = Decimal128

সলাহ: ডেটা মডেলিংয়ের সময় একই ফিল্ডে কনসিস্টেন্ট ডেটা টাইপ রাখা ভালো প্র্যাকটিস।

  1. MySQL-এ কলামের সর্বোচ্চ মান বের করা (MAX ফাংশন)

  2. MySQL-এ একটি কলামের nth সর্বোচ্চ মান বের করা

  3. MySQL কোয়েরি কলামে n-তম সর্বোচ্চ মান বের করতে মানগুলো স্কিপ করে

  4. MySQL-এ কলামের সর্বোচ্চ মান বের করা (Find Maximum Value in a Column)