定義
特定のウィンドウ内のドキュメントから最小値を返します。
注意
曖昧さ回避
このページでは、ウィンドウ関数として使用する場合の$min について説明します。
次の他のコンテキストでは $min を使用することもできます。
$min (accumulator)は、ドキュメントのグループから最小値を返すためにグループ化で使用されます。$min (expression)は、配列から最小値を返します。
構文
{ $setWindowFields: { ... output: { <field>: { $min: <expression> } } } }
動作
結果の型
$minが異なる型の値を比較する場合、 BSON比較順序を使用してどの値が小さいかを判断します。
NULL または欠損値
ウィンドウ内のドキュメントの一部のドキュメントには、フィールドの値が null であるか、フィールドが欠落している場合、$min はそれらを無視します。 null 以外と欠落値以外の値のみを考慮します。
nullウィンドウ内のすべてのドキュメントで、フィールドの値が であるか、フィールドが欠落している場合、$min はnull を返します。
例
このページの例では、 sample_mflix データセット のデータを使用します。このデータセットを自己管理型MongoDBデプロイにロードする 方法の詳細については、「 サンプル データセットをロードする 」を参照してください。サンプルデータベースに変更を加えた場合、このページの例を実行するには、データベースを削除して再作成する必要がある場合があります。
この例では、 を使用して、同じ年に公開された最低評価映画の IMDb$setWindowFields 評価を含む各ドキュメントにフィールドを追加します。
db.movies.aggregate( [ { $match: { year: { $in: [ 1999, 2000, 2001 ] }, "imdb.rating": { $lte: 3.5 } } }, { $setWindowFields: { partitionBy: "$year", sortBy: { title: 1 }, output: { minimumRatingInYear: { $min: "$imdb.rating", window: { documents: [ "unbounded", "unbounded" ] } }, rankInYear: { $documentNumber: {} } } } }, { $project: { _id: 0, title: 1, year: 1, imdb: { rating: "$imdb.rating" }, minimumRatingInYear: 1, rankInYear: 1 } }, { $sort: { year: 1, title: 1 } } ] )
先行するパイプライン:
$match1999を使用して、2000 、 、2001 3.0の IMDb 評価が 以下の映画をフィルタリングします。$setWindowFieldsを使用して、映画を で分割し、yeartitleでソートします。ステージでは、 のドキュメントウィンドウで を使用して が作成されます。これはパーティション全体で最小の$min[ "unbounded", "unbounded" ]minimumRatingInYearimdb.ratingを保持し、$documentNumberを使用してパーティションごとの行番号(rankInYear)を に割り当てます。各ドキュメント。$projecttitleを使用して、 、year、imdb、minimumRatingInYear、rankInYearを出力に含めます。$sortを使用して、結果を年とタイトルで並べ替えます。