sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB Query, seřadit a poté vzít n-tý dokument pro skupinu

Takto byste to udělali pomocí 4fázového agregačního potrubí

  1. Seřaďte podle zemí a hodnocení, jak jste to již udělali
  2. Seskupit podle země a umístit všechny podrobnosti o hráči do pole
  3. Tohle je rozhodující. Použijte project pomocí $arrayElemAt získat ith hodnoceného hráče pro každou z příslušných zemí
  4. Použijte znovu projekt, abyste získali objekt v požadovaném formátu

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

Podívejte se na snímek obrazovky níže pro 2nd Highest Rated Players . Protože jsou 0-indexed , iTH_RATING proměnná v dotazu je nahrazena 1. Chcete-li získat hráče s nejvyšším hodnocením, nahraďte je 0, tak dále a tak dále.



  1. jak importovat soubor Excel (XLSX) do mongoDB

  2. MongoDB aktualizuje objekt pole v poli

  3. Nasazování aplikací na CDP Operational Database (COD)

  4. Podmíněně zahrnout pole (_id nebo jiné) do agregace projektu mongodb?