MongoDBで平均値を計算する方法:$avg演算子の使い方
MongoDBで平均値を計算するには
MongoDBで数値データの平均値を求めたい場合、集計パイプライン(aggregation pipeline)で使える$avg演算子を使用します。この記事では、実際にコレクションを作成しながら、$avg演算子を使った平均値の計算方法を具体的な例とともに解説します。
サンプルコレクションの作成
まず、ドキュメントを含むコレクションを作成しましょう。ここでは「demo80」というコレクションに、Priceフィールドを持つDetailsオブジェクトを含むドキュメントを挿入します。
> db.demo80.insertOne({"Details":{"Price":10.5}});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e2bf43271bf0181ecc42297")
}
> db.demo80.insertOne({"Details":{"Price":50.3}});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e2bf43871bf0181ecc42298")
}
> db.demo80.insertOne({"Details":{"Price":100.10}});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e2bf43f71bf0181ecc42299")
}上記のコマンドにより、3件のドキュメントが正常に挿入されました。
find()メソッドでドキュメントを確認する
挿入したすべてのドキュメントを確認するには、find()メソッドを使用します。
> db.demo80.find();
このクエリを実行すると、以下のような出力が得られます。
{ "_id" : ObjectId("5e2bf43271bf0181ecc42297"), "Details" : { "Price" : 10.5 } }
{ "_id" : ObjectId("5e2bf43871bf0181ecc42298"), "Details" : { "Price" : 50.3 } }
{ "_id" : ObjectId("5e2bf43f71bf0181ecc42299"), "Details" : { "Price" : 100.1 } }3つのドキュメントそれぞれに、10.5、50.3、100.1という価格データが格納されていることがわかります。
$avg演算子を使った平均値計算クエリ
それでは、本題である平均値の計算を行いましょう。MongoDBで平均を求めるには、aggregate()メソッド内で$groupステージと$avg演算子を組み合わせます。以下がそのクエリです。
> db.demo80.aggregate([
... {
... "$group": {
... "_id": null,
... "AvgValue": {
... "$avg": "$Details.Price"
... }
... }
... }
... ]);クエリのポイント解説
- "_id": null:グループ化のキーをnullに設定することで、コレクション内の全ドキュメントをひとつのグループとして扱います。
- "$avg": "$Details.Price":Detailsオブジェクト内のPriceフィールドを対象に平均値を計算します。フィールド名は「$」を付けて参照する点に注意してください。
実行結果
このクエリを実行すると、以下の出力が得られます。
{ "_id" : null, "AvgValue" : 53.633333333333326 }(10.5 + 50.3 + 100.1) ÷ 3 = 53.6333…という計算結果が正しく返されています。このように、$avg演算子を使えば、埋め込みドキュメント(ネストされたフィールド)の値も簡単に集計できます。
まとめ
MongoDBで平均値を計算する際は、aggregate()メソッドの$groupステージで「_id」をnullにし、$avg演算子に対象フィールドを指定するだけです。売上データや評価スコアなど、数値データの統計処理に幅広く活用できるので、ぜひ覚えておきましょう。
-
MongoDBで配列要素の平均値を取得するクエリの書き方
MongoDBで配列内の数値の平均を求める方法MongoDBでは、配列に格納された複数の数値から平均値を算出したいケースがよくあります。例えば、1つのドキュメントの中に複数の点数(Marks)が配列として保存されている場合、その平均点を取得したいことがあります。このような場合、集計パイプライン(aggregation)と$avg演算子を組み合わせることで、簡単に平均値を求めることができます。$avgは、指定したフィールド(配列の場合はその全要素)の数値の平均を自動的に計算してくれる便利な演算子です。以下、具体的な手順を見ていきましょう。1. コレクションを作成し、ドキュメントを挿入するまず、i
-
MySQLクエリで列の数値の平均を計算する方法
MySQLでは、集計関数のAVG()を使うことで、列に含まれる数値の平均値を簡単に計算できます。この記事では、実際にテーブルを作成し、AVG()関数を使って平均を求める手順を順番に解説します。AVG()関数の基本構文平均を計算するための基本構文は以下のとおりです。SELECT AVG(カラム名) AS 任意の別名 FROM テーブル名;サンプルテーブルの作成まず、動作を確認するためのテーブルを作成しましょう。以下はテーブル作成用のクエリです。mysql> create table AverageCalculateDemo -> ( &