0

次のような構造のドキュメントがあります。

{
  '_id' => 'Star Wars',
  'count' => 1234,
  'spelling' => [ ( 'Star wars' => 10, 'Star Wars' => 15, 'sTaR WaRs' => 5) ]
}

上位 N 個のドキュメント (降順) を取得したいのですが、ドキュメントごとにスペルが 1 つだけです (値が最も高いもの)。集約フレームワークでこれを行う方法はありますか?

上位 10 件の結果を簡単に取得できます ($sort と $limit を使用)。しかし、それぞれに 1 つのスペルだけを取得するにはどうすればよいでしょうか。

たとえば、次の 3 つのレコードがあるとします。

{
  '_id' => 'star_wars',
  'count' => 1234,
  'spelling' => [ ( 'Star wars' => 10, 'Star Wars' => 15, 'sTaR WaRs' => 5) ]
}
{
  '_id' => 'willow',
  'count' => 2211,
  'spelling' => [ ( 'willow' => 300, 'Willow' => 550) ]
}
{
  '_id' => 'indiana_jones',
  'count' => 12,
  'spelling' => [ ( 'indiana Jones' => 10, 'Indiana Jones' => 25, 'indiana jones' => 5) ]
}

上位 2 つの結果を求めると、次の結果が得られます。

{
  '_id' => 'willow',
  'count' => 2211,
  'spelling' => 'Willow'
}
{
  '_id' => 'star_wars',
  'count' => 1234,
  'spelling' => 'Star Wars'
}

(またはこの趣旨の何か)

ありがとう!

4

1 に答える 1