Sådan ville du gøre det ved at bruge en 4-trins aggregeringspipeline
- Sortér landemæssigt og vurderingsmæssigt, som du allerede har gjort
- Grupper efter land, og skub alle spilleroplysninger ind i en række
- Denne her er klinkeren. Brug
project
med$arrayElemAt
for at fåith
bedømt spiller for hvert af de respektive lande -
Brug project igen for at give dig objektet i det ønskede format
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" } })
Se skærmbilledet nedenfor for 2nd Highest Rated Players
. Da disse er 0-indexed
, iTH_RATING
variabel i forespørgslen erstattes med 1. For at få de højest vurderede spillere udskiftes med 0, så videre og så videre.