MongoDB-এ একটি ফিল্ডের সর্বনিম্ন (min) এবং সর্বোচ্চ (max) মান বের করতে অ্যাগ্রিগেশন পাইপলাইনে $group স্টেজের সাথে $min এবং $max অ্যাকুমুলেটর ব্যবহার করা হয়।
নমুনা কালেকশন তৈরি
> db.demo251.insertOne({ "Marks": 78 });
{ "acknowledged": true, "insertedId": ObjectId("5e46c0001627c0c63e7dba74") }
> db.demo251.insertOne({ "Marks": 87 });
{ "acknowledged": true, "insertedId": ObjectId("5e46c0031627c0c63e7dba75") }
> db.demo251.insertOne({ "Marks": 56 });
{ "acknowledged": true, "insertedId": ObjectId("5e46c0061627c0c63e7dba76") }
> db.demo251.insertOne({ "Marks": 76 });
{ "acknowledged": true, "insertedId": ObjectId("5e46c00c1627c0c63e7dba77") }
ডকুমেন্টগুলো দেখানো
> db.demo251.find();
আউটপুট:
{ "_id": ObjectId("5e46c0001627c0c63e7dba74"), "Marks": 78 }
{ "_id": ObjectId("5e46c0031627c0c63e7dba75"), "Marks": 87 }
{ "_id": ObjectId("5e46c0061627c0c63e7dba76"), "Marks": 56 }
{ "_id": ObjectId("5e46c00c1627c0c63e7dba77"), "Marks": 76 }
Min/Max অ্যাগ্রিগেশন
> db.demo251.aggregate([
{
$group: {
_id: null,
MaxMarks: { $max: "$Marks" },
MinMarks: { $min: "$Marks" }
}
}
]);
ফলাফল
{ "_id": null, "MaxMarks": 87, "MinMarks": 56 }
ব্যাখ্যা:
_id: null- সব ডকুমেন্ট একসাথে গ্রুপ করে।$max: "$Marks"- Marks ফিল্ডের সর্বোচ্চ মান (৮৭)।$min: "$Marks"- Marks ফিল্ডের সর্বনিম্ন মান (৫৬)।
গ্রুপ বাই করে Min/Max
যদি ক্যাটাগরি অনুযায়ী Min/Max লাগে:
db.demo251.aggregate([
{ $group: {
_id: "$Category",
MaxMarks: { $max: "$Marks" },
MinMarks: { $min: "$Marks" }
}
}
]);
অন্যান্য অ্যাগ্রিগেশন অপারেটর
| অপারেটর | কাজ |
|---|---|
$sum | যোগফল |
$avg | গড় |
$first | গ্রুপের প্রথম ভ্যালু |
$last | গ্রুপের শেষ ভ্যালু |
$push | সব ভ্যালু অ্যারেতে সংগ্রহ |
$addToSet | ইউনিক ভ্যালু অ্যারেতে সংগ্রহ |
$stdDevPop | পপুলেশন স্ট্যান্ডার্ড ডেভিয়েশন |
$stdDevSamp | স্যাম্পল স্ট্যান্ডার্ড ডেভিয়েশন |
find() এ সর্ট করে লিমিট (সিম্পল Min/Max)
- Max:
db.demo251.find().sort({Marks: -1}).limit(1) - Min:
db.demo251.find().sort({Marks: 1}).limit(1)
এটি ইন্ডেক্স ব্যবহার করে খুব দ্রুত, কিন্তু একসাথে Min/Max পাওয়া যায় না।