これは、4段階の集約パイプラインを使用して行う方法です
- すでに行ったように、国ごとおよび評価ごとに並べ替えます
- 国ごとにグループ化し、すべてのプレーヤーの詳細を配列にプッシュします
- これはクリンチャーです。
project
を使用する$arrayElemAt
を使用ith
を取得するには 各国のレーティングプレーヤー -
プロジェクトを再度使用して、目的の形式でオブジェクトを提供します
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に置き換えます。以下同様です。