定義
注意
$maxN のその他の使用方法
このページでは、配列から最大の n 値を返す 式として使用する場合の $maxN について説明します。
$maxN は、これらの他のコンテキストでも使用できます。
$maxN (accumulator)、グループ内の最大n値を返します。$maxN (window function)は、$setWindowFieldsステージで使用され、特定のウィンドウのドキュメントから最大のn値を返します。
構文
{ $maxN: { n: <expression>, input: <expression> } }
フィールド | タイプ | 説明 |
|---|---|---|
| 式 | 返す要素の数を指定します。正の整数に解決される必要があります。 |
| 式 | 最大 |
動作
$maxNnull値をフィルターで除外します。input配列にn個未満の要素が含まれている場合、$maxNは配列内のすべての要素を返します。inputが配列以外の値に解決される場合、操作はエラーを返します。inputに数値要素と string 要素の両方が含まれる場合、string 要素はBSON 比較順序に従って数値要素より先にソートされます。
例
このページの例では、sample_mflix データセット のデータを使用しています。自己管理型 MongoDB 配置にこのデータセットをロードする方法の詳細については、「サンプル データセットのロード」を参照してください。サンプル データベースに何らかの変更を加えた場合は、今ページの例を実行するには、データベースを削除して再作成する必要がある可能性があります。
以下の例では、$maxNを使用して各映画のキャストノードのうち、アルファベット順で最後の2人を返し、$addFieldsによって作成された新しいtopTwoCastフィールドに保存します。
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 } } ] )
以前のパイプライン:
$matchを使用して3本の特定の映画をフィルターします。$maxNとともに$addFieldsを使用して、n: 2を使用してcast配列から字典順で最後の 2 つの値を含む新しいフィールドtopTwoCastを作成します。$projectを使用すると、出力にはtitleフィールド、castフィールド、topTwoCastフィールドのみが含まれます。結果をタイトルでソートするために、
$sortを使用します。