$topN (上位 N アキュムレータ)

最終更新:2026-10-09

$topN (上位 N アキュムレータ)

$topN は、指定したソート順序に従ってグループごとに上位 N 個のドキュメント(または式の値)を返すアキュムレータで、MongoDB 5.2 以降で利用できます。順序は $group の sortBy に由来し、n は定数式にもできます。ランキングやグループごとの上位リストに向きます。

カテゴリアキュムレータ
MongoDB バージョン5.2+
例の言語mongosh(シェル)

📝 構文

{ $group: { _id: <key>, topN: { $topN: { sortBy: { <field>: <1 or -1> }, output: <expression>, n: <number> } } } }

戻り値:グループごとの上位 N 個の値またはドキュメントの配列

▶ 例

以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):

// $topN: クラスごとの名前の上位 3 件
db.scores.aggregate([
  { $group: { _id: '$class', top3: { $topN: { sortBy: { score: -1 }, output: '$name', n: 3 } } } }
])

出力:

{ "_id": "A", "top3": ["Alice", "Bob", "Carol"] }

📌 注意事項

さらなる実践ケースを近日公開予定。

📚 関連チュートリアル

❓ よくある質問

Q$topN の n は変数にできますか?
Aはい。n はフィールドを参照する式にできます。例: '$limitCount'。
Q$topN と「$sort して $limit」の違いは?
A$topN は各グループ内で上位 N を取ります。$sort と $limit はストリーム全体の上位 N を取ります。
Q同点はどう扱われますか?
A同点の要素は順序が保証されません。安定させたい場合は一意なソートキーを使います。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%