$avg (平均アキュムレータ)
最終更新:2026-10-09
$avg (平均アキュムレータ)
$avg は、$group 内でグループ全体の指定フィールドの平均を、$project 内で配列要素の平均を計算するアキュムレータです。null や欠損した値は無視され、数値だけを平均します。レポート集計でよく使われ、平均対象の式はいくらでも複雑化できます。
| カテゴリ | アキュムレータ |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
// $group 内の指定フィールドの平均
{ $group: { _id: <key>, avg: { $avg: "$field" } } }
// $project 内の配列要素の平均
{ $project: { avg: { $avg: "$scores" } } }
戻り値:数値の平均(null と欠落値は無視)
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $avg: アイテムごとの平均価格
db.sales.aggregate([
{ $group: { _id: '$item', avg: { $avg: '$price' } } }
])
出力:
{ "_id": "Pen", "avg": 45.5 }
{ "_id": "Book", "avg": 12.0 }
📌 注意事項
- null・欠損・数値以外の値は無視される
- $project では配列要素の平均を出す
- $sum と $count を組み合わせると加重平均を計算できる
🏷️ 関連タグ
💡 関連ケース
📚 関連チュートリアル
❓ よくある質問
Q$avg が欠損フィールドに当たった場合はどうなりますか?
A欠損値や null は無視され、存在する数値だけを平均します。
Q$avg は $project 内で使えますか?
Aはい。配列要素の平均を出せます。例: { $project: { a: { $avg: '$scores' } } }。
Q加重平均はどう計算しますか?
A$sum で「値 × 重み」を累積し、重みの $sum で割ります。