आप इसे 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 से बदलने के लिए, इत्यादि।