定義
配列内の n つの最小値を返します。
注意
曖昧さ回避
このページでは、$minN を 式として使用する場合について説明します。これは、配列内の n 個の最小値を返します。
$minN は、これらの他のコンテキストでも使用できます。
$minN (accumulator), 変数の入力ドキュメントに基づいて集計値を返します。$minN (window function)は、$setWindowFieldsステージで使用され、特定のウィンドウのドキュメントから最小値nを返します。
構文
{ $minN: { n: <expression>, input: <expression> } }
動作
1nの値は指定できません。$minNinput配列にあるnull値をフィルターします。指定された
nがinput配列内の要素数以上の場合、$minNはinput配列内のすべての要素を返します。inputが配列以外の値に解決される場合、式はエラーになります。もし `
input` に異なる型の要素が含まれている場合、型を超えた比較は BSON 比較順序に従います。
例
このページの例では、sample_mflix データセット のデータを使用しています。自己管理型 MongoDB 配置にこのデータセットをロードする方法の詳細については、「サンプル データセットのロード」を参照してください。サンプル データベースに何らかの変更を加えた場合は、今ページの例を実行するには、データベースを削除して再作成する必要がある可能性があります。
次の例では、$minN 演算子を使用して、各映画のアルファベット順で最初にくる 2 つのジャンルを返します。結果は、$addFields によって作成された新しいフィールド firstAlphabeticalGenres に返されます。
db.movies.aggregate( [ { $match: { $expr: { $gte: [ { $size: "$genres" }, 3 ] } } }, { $addFields: { firstAlphabeticalGenres: { $minN: { n: 2, input: "$genres" } } } }, { $project: { _id: 0, title: 1, genres: 1, firstAlphabeticalGenres: 1 } }, { $limit: 5 } ] )
以前のパイプライン:
$matchを使用して、少なくとも 3 つのジャンルを持つ映画をフィルターします。$addFieldsを使用して、firstAlphabeticalGenresフィールドを作成します。$minNとn: 2を使用すると、genres配列から字典順で最初の 2 つの値が返されます。$projectを使用して、title、genres、firstAlphabeticalGenresフィールドのみを返します。読みやすさを向上させるために、`
$limit` を使用して 5 つのドキュメントを返します。