Aggregate পাইপলাইন ব্যবহার করে অ্যারেতে নির্দিষ্ট মানের সর্বাধিক Ocurrence খুঁজে বের করা
এই কাজের জন্য aggregate() ফাংশন ব্যবহার করা হয়। আমরা $filter এবং $size ব্যবহার করে নির্দিষ্ট মানের সংখ্যা গণনা করব, তারপর $group, $sort এবং $limit দিয়ে সর্বাধিক occurrence ওয়ালা ডকুমেন্ট বের করব।
নমুনা সংগ্রহ তৈরি
> db.countOccurrencesDemo.insertOne({"ListOfValues":[65,87,89,65,67,87,87,87]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e06ef9325ddae1f53b621eb") }
> db.countOccurrencesDemo.insertOne({"ListOfValues":[102,65,87,65,89,65,89,65,89,65]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e06efaa25ddae1f53b621ec") }
সব ডকুমেন্ট দেখানো
> db.countOccurrencesDemo.find();
আউটপুট:
{ "_id" : ObjectId("5e06ef9325ddae1f53b621eb"), "ListOfValues" : [ 65, 87, 89, 65, 67, 87, 87, 87 ] }
{ "_id" : ObjectId("5e06efaa25ddae1f53b621ec"), "ListOfValues" : [ 102, 65, 87, 65, 89, 65, 89, 65, 89, 65 ] }
সর্বাধিক occurrence (এখানে 65) ধারণকারী ডকুমেন্ট বের করার কোয়েরি
> db.countOccurrencesDemo.aggregate([
{ "$project": {
"ListOfValues": 1,
"OccurencesValue": {
"$size": {
"$filter": {
"input": "$ListOfValues",
"as": "v",
"cond": { "$eq": ["$$v", 65] }
}
}
}
}},
{ "$group": {
"_id": "$OccurencesValue",
"MyValues": { "$push": "$$ROOT" }
}},
{ "$sort": { "_id": -1 } },
{ "$limit": 1 }
]);
ফলাফল:
{ "_id" : 5, "MyValues" : [ { "_id" : ObjectId("5e06efaa25ddae1f53b621ec"), "ListOfValues" : [ 102, 65, 87, 65, 89, 65, 89, 65, 89, 65 ], "OccurencesValue" : 5 } ] }
ব্যাখ্যা: দ্বিতীয় ডকুমেন্টে 65 মোট ৫ বার এসেছে, যা সর্বাধিক। তাই সেটিই ফলাফলে দেখা যাচ্ছে।