定義
ウィンドウ内の最後の n 要素を含む配列を返します。
注意
曖昧さ回避
このページでは、ウィンドウ関数として使用する場合の$lastN について説明します。
次の他のコンテキストでは $lastN を使用することもできます。
$lastN (accumulator)n。グループ化で使用され、各グループから最後の 要素を返します。$lastN (expression)は、配列の末尾から指定された数の要素を返します。
構文
{ $setWindowFields: { ... output: { <field>: { $lastN: { input: <expression>, n: <expression> } } } } }
オプション
フィールド | タイプ | 説明 |
|---|---|---|
| 式 |
|
| 式 |
ウィンドウに含まれる要素が |
動作
$lastN は、null および欠落値に対して次の動作をします。
$lastNは、null 値をフィルタリングで除外しません。$lastN欠落値を null に変換します。
例
このページの例では、 sample_mflix データセット のデータを使用します。このデータセットを自己管理型MongoDBデプロイにロードする 方法の詳細については、「 サンプル データセットをロードする 」を参照してください。サンプルデータベースに変更を加えた場合、このページの例を実行するには、データベースを削除して再作成する必要がある場合があります。
この例では、$setWindowFields yearを使用して、映画をimdb.rating で分割し、 で降順にソートして、各年の最低評価 3 つの映画を返します。
db.movies.aggregate( [ { $match: { year: { $in: [ 1979, 1985, 1992 ] }, "imdb.rating": { $lte: 4.5, $gt: 0 } } }, { $setWindowFields: { partitionBy: "$year", sortBy: { "imdb.rating": -1, "title": 1 }, output: { lowestRatedThreeMoviesInYear: { $lastN: { input: "$title", n: 3 }, window: { documents: [ "unbounded", "unbounded" ] } } } } }, { $project: { _id: 0, title: 1, year: 1, "imdb.rating": 1, lowestRatedThreeMoviesInYear: 1 } }, { $sort: { year: 1, "imdb.rating": -1, "title": 1 } } ] )
先行するパイプライン:
$match1979ステージを使用して、 、 、1985 にリリースされ、1992 IMDb 評価が4.5 以下の映画に結果をフィルタリングします。$setWindowFieldsyearを使用して、映画をimdb.ratingで分割し、titleで降順に並べ替え、 をタイブレークとして並べ替えます。ステージでは、$lastNn: 3lowestRatedThreeMoviesInYearとdocuments: [ "unbounded", "unbounded" ]を使用して、 として定義されたウィンドウから を作成します。出力に
$projecttitleyear、 、imdb.rating、 フィールドのみを含めるには、 を使用します。lowestRatedThreeMoviesInYear$sortを使用して、結果を年、評価、タイトルで並べ替えます。