sql >> データベース >  >> NoSQL >> MongoDB

MongoDBクエリ、並べ替えてからグループのn番目のドキュメントを取得

    これは、4段階の集約パイプラインを使用して行う方法です

    1. すでに行ったように、国ごとおよび評価ごとに並べ替えます
    2. 国ごとにグループ化し、すべてのプレーヤーの詳細を配列にプッシュします
    3. これはクリンチャーです。 projectを使用する $arrayElemAtを使用 ithを取得するには 各国のレーティングプレーヤー
    4. プロジェクトを再度使用して、目的の形式でオブジェクトを提供します

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

    2nd Highest Rated Playersについては、以下のスクリーングラブを参照してください。 。これらは0-indexedであるため 、iTH_RATING クエリの変数は1に置き換えられます。最高評価のプレーヤーを取得するには、0に置き換えます。以下同様です。



    1. SpringBoot2.0.1リリースのGridFSDBFile

    2. AzureのASP.NETCoreを使用してRedisでユーザーセッションを保存する

    3. 10.XX.XX.28:6379でRedisに接続できませんでした:不明なエラー-SpringBatchまたはWindowsマシンからのアクセス中に

    4. Redisデータ構造から複数の値をアトミックにポップしますか?