定義
配列内の n つの最小値を返します。
注意
曖昧さ回避
このページでは、配列内の$minN nの最小値を返す式として使用する場合の について説明します。
次の他のコンテキストでは $minN を使用することもできます。
$minN (accumulator)は、入力ドキュメントの変数に基づいて集計値を返します。$minN (window function)は、特定のウィンドウ内のドキュメントから最小の$setWindowFieldsn値を返すために ステージで使用されます。
構文
{ $minN: { n: <expression>, input: <expression> } }
動作
1nの値は指定できません。$minNは、input配列にあるnull値をフィルタリングで除外します。指定された
nがinput配列内の要素数以上の場合、$minNはinput配列内のすべての要素を返します。inputが配列以外の値に解決される場合、式はエラーを発生させます。
例
このページの例では、 sample_mflix データセット のデータを使用します。このデータセットを自己管理型MongoDBデプロイにロードする 方法の詳細については、「 サンプル データセットをロードする 」を参照してください。サンプルデータベースに変更を加えた場合、このページの例を実行するには、データベースを削除して再作成する必要がある場合があります。
次の例では、$minN 演算子を使用して、各映画のアルファベット順の 2 つのジャンルを返します。結果は、 によって作成された新しいフィールドfirstAlphabeticalGenres $addFieldsに返されます。
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 つのジャンルを持つ映画をフィルタリングするには、 を使用します。$addFieldsfirstAlphabeticalGenres$minNn: 2を使用してgenresフィールドを作成します。 と は、 配列からアルファベット順に最初の 2 つの値を返します。$projecttitleを使用して、genres、 、firstAlphabeticalGenresフィールドのみを返します。$limit読みやすさを向上させるために 5 つのドキュメントを返すには、 を使用します。