AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs Menu

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

$avg

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

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

注意

曖昧さ回避

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

次の他のコンテキストでは $avg を使用することもできます。

{ $avg: <expression> }

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

$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 }
]
このページを評価