$max (最大値アキュムレータ)
最終更新:2026-10-09
$max (最大値アキュムレータ)
$max は、$group 内でグループ全体の指定フィールドの最大値を、$project 内で配列の最大要素を返すアキュムレータです。比較は BSON の型順序に従うため、混在した型でも一貫して比較され、欠損フィールドは無視されます。
| カテゴリ | アキュムレータ |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $group: { _id: <key>, max: { $max: "$field" } } }
戻り値:グループ内の最大値(BSON 型順で比較)
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $max: アイテムごとの最高価格
db.sales.aggregate([
{ $group: { _id: '$item', max: { $max: '$price' } } }
])
出力:
{ "_id": "Pen", "max": 80 }
{ "_id": "Book", "max": 25 }
📌 注意事項
- 比較は BSON の型順序に従う。混在型でも有効
- 欠損フィールドは無視される
- $min と対称の挙動
🏷️ 関連タグ
💡 関連ケース
📚 関連チュートリアル
❓ よくある質問
Q$max は文字列を比較できますか?
Aはい。文字列は辞書順で比較され、異なる型は BSON の型順序に従って比較されます。
Q$max と「$sort して $limit」の違いは?
A$max はグループ内で効率的に最大値を算出します。$sort と $limit は先頭のドキュメント全体を取得するのに向いています。
Q$project 内での $max の使い方は?
A配列の最大要素を取ります。例: { $project: { m: { $max: '$scores' } } }。