$top (上位アキュムレータ)
最終更新:2026-10-09
$top (上位アキュムレータ)
$top は、指定したソート順序に従ってグループの先頭ドキュメントを返すアキュムレータです — 単一フィールドではなくドキュメント全体を返し、MongoDB 5.2 以降で利用できます。順序は $group の sortBy に由来し、$first と違い入力順には依存しません。複数個ほしい場合は $topN を使います。
| カテゴリ | アキュムレータ |
|---|---|
| MongoDB バージョン | 5.2+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $group: { _id: <key>, top: { $top: { sortBy: { <field>: <1 or -1> }, output: <expression> } } } }
戻り値:sortBy 順でグループの先頭ドキュメント
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $top: sortBy によるアイテムごとの最高価格
db.sales.aggregate([
{ $group: { _id: '$item', top: { $top: { sortBy: { price: -1 }, output: '$price' } } } }
])
出力:
{ "_id": "Pen", "top": 80 }
📌 注意事項
- MongoDB 5.2 以降が必要
- 順序は $group の sortBy に由来し、入力順とは独立
- output で式を指定。省略するとドキュメント全体を返す
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q$top と $first の違いは?
A$top は明示的なソート規則で最良を取ります。$first は入力順に従います。
Q$top にはどのバージョンが必要ですか?
AMongoDB 5.2 以降が必要です。
Q$top はドキュメント全体を返せますか?
Aはい。output を省略するとドキュメント全体を返します。