MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Kueri MongoDB, urutkan lalu ambil dokumen ke-n untuk grup

Beginilah cara Anda melakukannya menggunakan alur agregasi 4 tahap

  1. Urutkan berdasarkan negara dan peringkat seperti yang sudah Anda lakukan
  2. Kelompokkan menurut negara dan masukkan semua detail pemain ke dalam larik
  3. Yang ini penentunya. Gunakan project dengan $arrayElemAt untuk mendapatkan ith pemain berperingkat untuk masing-masing negara
  4. Gunakan proyek lagi untuk memberi Anda objek dalam format yang diinginkan

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

Lihat tangkapan layar di bawah untuk 2nd Highest Rated Players . Karena ini 0-indexed , iTH_RATING variabel dalam query diganti dengan 1. Untuk mendapatkan nilai tertinggi pemain ganti dengan 0, seterusnya dan seterusnya.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Apa cara terbaik untuk melakukan pagination ajax dengan MongoDb dan Nodejs?

  2. Konversi DBObject ke POJO menggunakan MongoDB Java Driver

  3. NodeJS/Mongoose/MongoDB - Tarik (dari array) tidak berfungsi

  4. Serialisasi MongoDB find() kembali ke array JSON non-anonim, menggunakan PyMongo

  5. Mongodb crash mendapat sinyal 15 (Dihentikan)