AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。

$avg(アキュムレータ演算子)

$avg

ドキュメントのグループ内の数値の平均を返します。

$avg アキュムレータは次のステージで使用可能です。

注意

曖昧さ回避

このページでは、$avg をアキュムレータとして使用する場合について説明します。アキュムレータは、入力ドキュメントのグループ全体で、合計、最大値、最小値などの単一の集計値を返します。

$avg は、これらの他のコンテキストでも使用できます。

{ $avg: <expression> }

デフォルトの戻り値型は double です。入力値の少なくとも1つが10進数の場合、戻り値の型は10進数です。

$avg 欠落値を含む数値以外の値を無視します。入力値がすべて非数値の場合、$avg は null を返します。

オペランドの結果が配列となる場合、$avgはオペランドを数値以外の値として扱います。

次のドキュメントを使用して sales コレクションを作成します。

db.sales.insertMany( [ { _id: 1, item: "abc", price: 10, quantity: 2, date: ISODate("2014-01-01T08:00:00Z") }, { _id: 2, item: "jkl", price: 20, quantity: 1, date: ISODate("2014-02-03T09:00:00Z") }, { _id: 3, item: "xyz", price: 5, quantity: 5, date: ISODate("2014-02-03T09:05:00Z") }, { _id: 4, item: "abc", price: 10, quantity: 10, date: ISODate("2014-02-15T08:00:00Z") }, { _id: 5, item: "xyz", price: 5, quantity: 10, date: ISODate("2014-02-15T09:12:00Z") }] )

次の操作を行います。

  1. item フィールドでドキュメントをグループ化します。

  2. $avg アキュムレータを使用して、各グループの平均金額と平均数量を計算します。

db.sales.aggregate( [ { $group: { _id: "$item", avgAmount: { $avg: { $multiply: [ "$price", "$quantity" ] } }, avgQuantity: { $avg: "$quantity" } } } ])

出力:

[ { _id: 'xyz', avgAmount: 37.5, avgQuantity: 7.5 }, { _id: 'abc', avgAmount: 60, avgQuantity: 6 }, { _id: 'jkl', avgAmount: 20, avgQuantity: 1 }]
このページを評価