AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。

$top(式演算子)

$top

バージョン8.3の新機能。

指定ソート順に従って、配列内の最上位の要素を返します。

注意

曖昧さ回避

このページでは、$top 式演算子について説明します。$top もこれらの他のコンテキストで使用できます。

式として使用する場合、$top は次の構文をとります。

{ $top: { sortBy: <expression>, input: <expression> }}
フィールド
必要性
説明

sortBy

必須

結果の順序を指定します。sortBy 値の詳細については、ソートの動作を参照してください。

入力

必須

$top が評価する配列。

MongoDB はsortBy 値に基づいて input 配列をソートします。次の表に、さまざまなソートオプションの例を示します。

input
sortBy
ソート済み input
[ 8, 3, 1, 10]

1

[1, 3, 8, 10]
[ 8, 3, 1, 10]

-1

[10, 8, 3, 1]
[ { a: 1, b: 1 }, { a: 2, b: 2 }, { a: 2, b: 1 }]

{ a: 1, b: 1 }

[ { a: 1, b: 1 }, { a: 2, b: 1 }, { a: 2, b: 2 }]

inputフィールドは配列に変換される必要があります。配列ではない input を指定すると、 MongoDB はエラーを返します。

以下の例では、sample_mflix サンプル データセットの movies コレクションを使用します。このデータセットを配置にロードする方法について詳しくは、「サンプル データセットのロード」を参照してください。

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 配列の $top を使用して、指定された映画のアルファベット順の最初のキャストメンバーを返します。

db.movies.aggregate([ { $match: { title: "The Godfather" } }, { $project: { _id: 0, title: 1, firstCastMemberAlphabetically: { $top: { sortBy: 1, input: "$cast" } } } }])
[ { title: 'The Godfather', firstCastMemberAlphabetically: 'Al Pacino' }]

この例では 、$top は既存の cast 配列をアルファベットの昇順でソートし、最初の値を返します。

このページを評価