MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB Query, sortuj, a następnie weź n-ty dokument dla grupy

W ten sposób można to zrobić za pomocą 4-stopniowego potoku agregacji

  1. Sortuj według krajów i według ocen, tak jak już to zrobiłeś
  2. Grupuj według kraju i umieść wszystkie dane gracza w tablicy
  3. Ten jest kluczem. Użyj project z $arrayElemAt aby uzyskać ith oceniany gracz dla każdego z odpowiednich krajów
  4. Użyj projektu ponownie, aby otrzymać obiekt w żądanym formacie

    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"
            }
    })
    

Zobacz zrzut ekranu poniżej dla 2nd Highest Rated Players . Ponieważ są one 0-indexed , iTH_RATING zmienna w zapytaniu jest zastępowana przez 1. Aby uzyskać najwyżej ocenianych graczy, zamień na 0, i tak dalej.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose VersionError:Nie znaleziono pasującego dokumentu dla identyfikatora podczas zapisywania dokumentu

  2. Interfejs JavaScript po stronie klienta Mongodb

  3. Aktualizacja Sails.js do wersji v1 z uwzględnieniem odwrotnej wielkości liter

  4. Mongodb nie jest poprawnie aktualizowany z wersji 4.2 do 4.4

  5. MongoDB:Nie można połączyć się z nowym wzorcem zestawu replik