定義
注意
$maxN のその他の用途
このページでは、配列から最大の$maxN n値を返す式として使用する場合の について説明します。
次の他のコンテキストでは $maxN を使用することもできます。
$maxN (accumulator)は、グループ内の最大n値を返します。$maxN (window function)は、特定のウィンドウ内のドキュメントから最大の$setWindowFieldsn値を返すために ステージで使用されます。
構文
{ $maxN: { n: <expression>, input: <expression> } }
フィールド | タイプ | 説明 |
|---|---|---|
| 式 | 返される要素の数を指定します。正の整数に解決される必要があります。 |
| 式 | 最大の |
動作
$maxNはnull値をフィルタリングで除外します。input配列に含まれる要素の数がn未満の場合、$maxNは配列内のすべての要素を返します。inputが配列以外の値に解決された場合、操作はエラーを返します。inputに数値要素と string 要素の両方が含まれている場合、string 要素はBSON比較順序に従って数値要素の前にソートされます。
例
このページの例では、 sample_mflix データセット のデータを使用します。このデータセットを自己管理型MongoDBデプロイにロードする 方法の詳細については、「 サンプル データセットをロードする 」を参照してください。サンプルデータベースに変更を加えた場合、このページの例を実行するには、データベースを削除して再作成する必要がある場合があります。
次の例では、$maxN topTwoCast$addFieldsを使用して、 によって作成された新しい フィールドに保存されている、各映画のアルファベット順の最後のキャスト メンバーを返します。
db.movies.aggregate( [ { $match: { title: { $in: [ "The Godfather", "Spirited Away", "The Dark Knight" ] } } }, { $addFields: { topTwoCast: { $maxN: { n: 2, input: "$cast" } } } }, { $project: { _id: 0, title: 1, cast: 1, topTwoCast: 1 } }, { $sort: { title: 1 } } ] )
先行するパイプライン:
$match3 つの特定の映画をフィルタリングするには、 を使用します。と を使用して、
$addFields$maxNtopTwoCastを持つ 配列のアルファベット順に最後の 2 つの値を含む新しいフィールドcastn: 2を作成します。出力に
$projecttitlecast、 、 フィールドのみを含めるには、 を使用します。topTwoCast$sort結果をタイトル別にソートするには、 を使用します。