定義
構文
式子として使用する場合、$bottomN は次の構文をとります。
{ $bottomN: { n: <expression>, sortBy: { <field1>: <sort order>, <field2>: <sort order> ... }, input: <expression> } }
フィールド | 必要性 | 説明 |
|---|---|---|
n | 必須 | 返される配列要素の数。 |
sortBy | 必須 | 結果の順序を指定します。詳細については、「 ソート動作 」を参照してください。 |
入力 | 必須 |
|
動作
ソート動作
MongoDB はsortBy 値に基づいて input 配列をソートします。次の表に、さまざまなソートオプションの例を示します。
input | sortBy | ソート済み input | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| | ||||||||||
|
| | ||||||||||
|
| |
Input Values
inputフィールドは配列に変換される必要があります。配列ではない input を指定すると、 MongoDB はエラーを返します。
例
次の例では、movies sample_mflixサンプルデータセットの コレクションを使用します。このデータセットを配置にロードする方法の詳細については、「サンプルデータセットをロードする 」を参照してください。
moviesコレクションには、次の例のようなドキュメントが含まれています。
{ _id: ObjectId('573a1396f29313caabce4a9a'), year: 1972, genres: [ 'Crime', 'Drama' ], title: 'The Godfather', cast: [ 'Marlon Brando', 'Al Pacino', 'James Caan', 'Richard S. Castellano' ], directors: [ 'Francis Ford Coppola' ], runtime: 175, ... }
次の集計パイプラインでは、cast 配列で $bottomN を使用します。
db.movies.aggregate([ { $match: { title: "The Godfather" } }, { $project: { _id: 0, title: 1, lastThreeCastMembersAlphabetically: { $bottomN: { n: 3, sortBy: 1, input: "$cast" } } } } ])
[ { title: 'The Godfather', lastThreeCastMembersAlphabetically: [ 'James Caan', 'Marlon Brando', 'Richard S. Castellano' ] } ]
この例では 、$bottomN は既存の cast 配列をアルファベットの昇順でソートし、最後の 3 つの値を返します。