$group (ドキュメントのグループ化)

最終更新:2026-10-09

$group (ドキュメントのグループ化)

$group は、指定したキー(_id)でドキュメントをグループ化し、グループごとに集計式($sum/$avg/$max など)を適用します。SQL の GROUP BY に相当する、最も強力なパイプラインステージです。_id にはフィールドパス("$field")や複合式でグループキーを定義できます。

カテゴリコアステージ
MongoDB バージョン1.0+
例の言語mongosh(シェル)

📝 構文

{ $group: { _id: <group-key>, <field>: { <accumulator>: <expr> }, ... } }

▶ 例

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

// $group: ステータスごとに件数と合計を集計
db.orders.aggregate([
  { $group: { _id: "$status", count: { $sum: 1 }, total: { $sum: "$amount" } } }
])

出力:

{ "_id": "A", "count": 2, "total": 380 }
{ "_id": "B", "count": 1, "total": 130 }

📌 注意事項

📚 関連チュートリアル

❓ よくある質問

Q$group は SQL の GROUP BY と完全に同じですか?
A核となる部分は同じですがより柔軟です。_id に任意の式を指定でき、集計対象外の列は直接選択できず $first/$push で復元する必要があります。
Q$group で _id は必須ですか?
Aはい。_id がグループキーを定義し、フィールド・式・複合オブジェクトのいずれも指定できます。null を渡すと全ドキュメントが 1 つのグループにまとまります。
Q$group の出力順は安定していますか?
AMongoDB は $group の出力順やグループ化の順序を保証しません。並び順が必要なら後続に $sort ステージを追加してください。
Web-Tutorial.com

Web-Tutorial 技術チーム

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

100%