$sum (合計アキュムレータ)

最終更新:2026-10-09

$sum (合計アキュムレータ)

$sum は、グループ全体での指定フィールドの合計を計算するアキュムレータです(リテラル 1 を渡すと件数になります)。$group 内で合計・件数の集計に使い、$project では配列要素の合計にも使えます。式として使う場合は、入力されたすべてのドキュメントにわたって指定式を合計します。

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

📝 構文

// $group 内での合計
{ $group: { _id: <key>, total: { $sum: "$field" } } }
// 件数
{ $group: { _id: <key>, count: { $sum: 1 } } }

▶ 例

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

// $sum: アイテムごとの合計と件数
db.sales.aggregate([
  { $group: { _id: "$item", total: { $sum: "$price" }, count: { $sum: 1 } } }
])

出力:

{ "_id": "abc", "total": 25, "count": 2 }
{ "_id": "xyz", "total": 30, "count": 3 }

📌 注意事項

📚 関連チュートリアル

❓ よくある質問

Q$sum が文字列フィールドに当たった場合は?
A文字列や数値以外の値はスキップされます(エラーにはなりません)。厳密に扱うなら $toInt/$toDouble で変換するか、$ifNull でデフォルト値を指定してください。
Q$sum アキュムレータは $group 内でしか使えませんか?
Aアキュムレータとしては $group 専用ですが、$sum は通常の集計式としても動作し、たとえば $project 内で配列の合計を求めることもできます。
Q空配列に対する $sum の戻り値は?
A0 を返します。$group で一致ドキュメントがない場合や空配列の場合、$sum は 0 に集計されるため、件数のフォールバックとしても便利です。
Web-Tutorial.com

Web-Tutorial 技術チーム

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

100%