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
সলাহ: ডেটা মডেলিংয়ের সময় একই ফিল্ডে কনসিস্টেন্ট ডেটা টাইপ রাখা ভালো প্র্যাকটিস।