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 (accumulator)は、入力ドキュメントの変数に基づいて単一の集計値を返します。

  • $avg (window function)$setWindowFields。これは特定のウィンドウ内のドキュメントからの平均 値を返すために ステージで使用されます。

式として使用する場合、$avg は次のいずれかの構文をとります。

{ $avg: <expression> }

この構文では 、オペランドは配列に変換される単一の式です。 $avg は配列をトラバースし、配列の数値の平均を返します。例、{ $avg: "$testScores" } は testScores 配列フィールドの数値の平均を返します。

{ $avg: [ <expression1>, <expression2> ... ] }

この構文では 、入力配列内の各式は 1 つの数値です。$avg は個々の入力値の平均を返します。入力式のいずれかが配列に変換される場合、$avg は配列を走査せず、代わりに配列を数値以外の値として扱います。

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

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

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

db.students.insertMany( [
{ _id: 1, quizzes: [ 10, 6, 7 ], labs: [ 5, 8 ], final: 80, midterm: 75 },
{ _id: 2, quizzes: [ 9, 10 ], labs: [ 8, 8 ], final: 95, midterm: 80 },
{ _id: 3, quizzes: [ 4, 5, 5 ], labs: [ 6, 5 ], final: 78, midterm: 70 }
] )

次の操作では、$avg $projectステージの を使用して、次のフィールドの平均を計算します。

  • quizzes

  • labs

  • final と midterm の合計

db.students.aggregate( [
{
$project: {
quizAvg: { $avg: "$quizzes"},
labAvg: { $avg: "$labs" },
examAvg: { $avg: [ "$final", "$midterm" ] }
}
}
] )

出力

[
{ _id: 1, quizAvg: 7.666666666666667, labAvg: 6.5, examAvg: 77.5 },
{ _id: 2, quizAvg: 9.5, labAvg: 8, examAvg: 87.5 },
{ _id: 3, quizAvg: 4.666666666666667, labAvg: 5.5, examAvg: 74 }
]
このページを評価