定義
配列の先頭から指定した数の要素を返します。
注意
曖昧さ回避
このページでは、配列の先頭から指定された数の要素を式として使用される場合の$firstN について説明します。
次の他のコンテキストでは $firstN を使用することもできます。
$firstN (accumulator)n。グループ化で使用され、各グループから最初の 要素を返します。$firstN (window function)。これは特定のウィンドウ内のドキュメントから最初の$setWindowFieldsn値を返すために ステージで使用されます。
構文
{ $firstN: { input: <expression>, n: <expression> } }
オプション
フィールド | タイプ | 説明 |
|---|---|---|
| 式 | 最初の |
| 式 |
|
動作
$firstNは、入力配列に出現する順序で要素を返します。$firstNは入力配列内のnull値をフィルタリングで除外しません。1nの値は指定できません。指定された
nがinput配列の要素数以上の場合、$firstNはinput配列全体を返します。inputが配列以外の値に解決される場合、集計操作はエラーになります。
例
このページの例では、 sample_mflix データセット のデータを使用します。このデータセットを自己管理型MongoDBデプロイにロードする 方法の詳細については、「 サンプル データセットをロードする 」を参照してください。サンプルデータベースに変更を加えた場合、このページの例を実行するには、データベースを削除して再作成する必要がある場合があります。
次の例では、$firstN 演算子を使用して、各映画の最初の 3 つのキャスト メンバーを返します。キャストメンバーは、 によって作成された新しいフィールドfirstThreeCast $addFieldsに返されます。
db.movies.aggregate( [ { $match: { title: { $in: [ "The Godfather", "Spirited Away", "The Dark Knight" ] } } }, { $addFields: { firstThreeCast: { $firstN: { input: "$cast", n: 3 } } } }, { $project: { _id: 0, title: 1, cast: 1, firstThreeCast: 1 } }, { $sort: { title: 1 } } ] )
先行するパイプライン:
$match3 つの特定の映画をフィルタリングするには、 を使用します。と を使用して、 を持つ
$addFields$firstNfirstThreeCast配列の最初の 3 つの要素を含む新しいフィールドcastn: 3を作成します。出力に
$projecttitlecast、 、 フィールドのみを含めるには、 を使用します。firstThreeCast$sort結果をタイトル別にソートするには、 を使用します。