आप इसे 4 चरणों वाली एग्रीगेशन पाइपलाइन का उपयोग करके इस तरह से करेंगे
- देश-वार और रेटिंग-वार क्रमित करें जैसा आप पहले ही कर चुके हैं
- देश के अनुसार समूह बनाएं और सभी खिलाड़ी विवरण को एक सरणी में पुश करें
- यह एक नैदानिक है।
projectका उपयोग करें$arrayElemAt. के साथith. प्राप्त करने के लिए संबंधित देशों में से प्रत्येक के लिए रेटेड खिलाड़ी -
आपको वांछित प्रारूप में वस्तु देने के लिए प्रोजेक्ट का पुन:उपयोग करें
db.getCollection('players').aggregate( { $sort: {country: 1, rating: -1} }, { $group: { _id: "$country", players: {$push: {name: "$name", rating: "$rating", event: "$event"}} } }, { $project: { player: {$arrayElemAt: ["$players", iTH_RATING]} } }, { $project: { name: "$player.name", rating: "$player.rating", event: "$player.event" } })
2nd Highest Rated Players . के लिए नीचे स्क्रीन ग्रैब देखें . चूंकि ये 0-indexed . हैं , iTH_RATING क्वेरी में वेरिएबल को 1 से बदल दिया गया है। उच्चतम रेटेड खिलाड़ियों को 0 से बदलने के लिए, इत्यादि।