$firstN (先頭 N アキュムレータ)
最終更新:2026-10-09
$firstN (先頭 N アキュムレータ)
$firstN は、グループの先頭 N ドキュメント(入力順)のフィールドの配列を返すアキュムレータで、MongoDB 5.2 以降で利用できます。$topN と $top の関係と同様に $first と関連しますが、ソート規則ではなく入力順に従います。n は定数式にもできます。
| カテゴリ | アキュムレータ |
|---|---|
| MongoDB バージョン | 5.2+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $group: { _id: <key>, firstN: { $firstN: { input: <expression>, n: <number> } } } }
戻り値:グループの最初の N ドキュメントの式値の配列
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $firstN: アイテムごとに最も古い 3 レコードの価格
db.sales.aggregate([
{ $sort: { date: 1 } },
{ $group: { _id: '$item', first3: { $firstN: { input: '$price', n: 3 } } } }
])
出力:
{ "_id": "Pen", "first3": [20, 25, 30] }
📌 注意事項
- MongoDB 5.2 以降が必要
- 順序は入力に依存するため、意味を出すには先に $sort
- n は式を受け付けるため動的にできる
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q$firstN と $topN の違いは?
A$firstN は入力順の最初の N を取ります。$topN は sortBy 規則による上位 N を取ります。
Q先にソートする必要がありますか?
A順序は入力に従います。古い N 件を得るには時刻で先に $sort します。
Qn がグループのサイズを超えたら?
Aグループのすべての値を返します。