定義
指定されたウィンドウ内のドキュメントから n の最小値を返します。
注意
曖昧さ回避
このページでは、ウィンドウ関数として使用する場合の$minN について説明します。
次の他のコンテキストでは $minN を使用することもできます。
$minN (accumulator)n: 各グループの最小 値を返します。$minN (expression)は、配列内のnの最小値を返します。
構文
{ $setWindowFields: { ... output: { <field>: { $minN: { input: <expression>, n: <expression> } } } } }
フィールド | タイプ | 説明 |
|---|---|---|
| 式 |
|
| 式 |
ウィンドウに含まれる要素が |
動作
タイプ比較の順序
NULL および欠損値
$minN は null 値と欠損値を除外します。
例
このページの例では、 sample_mflix データセット のデータを使用します。このデータセットを自己管理型MongoDBデプロイにロードする 方法の詳細については、「 サンプル データセットをロードする 」を参照してください。サンプルデータベースに変更を加えた場合、このページの例を実行するには、データベースを削除して再作成する必要がある場合があります。
この例では、$minNウィンドウ関数を使用して、各年の最低 IMDb 評価を 2 つ返します。
db.movies.aggregate( [ { $match: { year: { $in: [ 1999, 2001 ] }, "imdb.rating": { $lte: 3.8, $gt: 0 } } }, { $setWindowFields: { partitionBy: "$year", output: { lowestTwoRatingsInYear: { $minN: { input: "$imdb.rating", n: 2 }, window: { documents: [ "unbounded", "unbounded" ] } } } } }, { $project: { _id: 0, title: 1, year: 1, "imdb.rating": 1, lowestTwoRatingsInYear: 1 } }, { $sort: { year: 1, "imdb.rating": 1 } } ] )
先行するパイプライン:
$matchを使用して、1999 2001IMDb 評価が3.8 以下で より大きい0 または の映画をフィルタリングします。$setWindowFieldsyearを使用して、 で映画を分割します。ステージでは、$minNn: 2lowestTwoRatingsInYearとdocuments: [ "unbounded", "unbounded" ]を使用して、 として定義されたウィンドウから を作成します。ウィンドウはパーティション内のすべてのドキュメントをカバーするため、 はlowestTwoRatingsInYear1 年のうち 2 つの最低評価を表示します。出力に
$projecttitleyear、 、imdb.rating、 フィールドのみを含めるには、 を使用します。lowestTwoRatingsInYear$sortを使用して結果を年ごとに並べ替え、imdb.ratingを使用して昇順に並べ替えます。