sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB-forespørgsel, sorter og tag n'te dokument for gruppe

Sådan ville du gøre det ved at bruge en 4-trins aggregeringspipeline

  1. Sortér landemæssigt og vurderingsmæssigt, som du allerede har gjort
  2. Grupper efter land, og skub alle spilleroplysninger ind i en række
  3. Denne her er klinkeren. Brug project med $arrayElemAt for at få ith bedømt spiller for hvert af de respektive lande
  4. 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.



  1. Spring MongoTemplate - find af regex i samling

  2. Er der en måde at få en bestemt nøgle til at finde på en specifik redis-instans i klyngetilstand?

  3. Findes der en MongoDB maksimal bson-størrelse?

  4. Redis:fan ud nyhedsfeeds i liste eller sorteret sæt?