MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBで特定フィールドの平均値を計算する方法【aggregate()と$avgの使い方】

MongoDBで特定フィールドの平均値を計算する方法

MongoDBで特定のフィールド(点数や価格など)の平均値を求めたい場合、aggregate() メソッドと $avg 演算子を組み合わせるのが基本です。$avg は集計パイプライン内で数値フィールドの平均を自動的に計算してくれる便利な演算子です。

ここでは、実際にサンプルコレクションを作成しながら、具体的な手順をわかりやすく解説していきます。

1. サンプルデータの作成

まず、ドキュメントを含むコレクションを作成します。以下では demo214 コレクションに、生徒名と点数のデータを挿入しています。

> db.demo214.insertOne({"Marks":56,"Name":"David"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3e319403d395bdc2134705")
}
> db.demo214.insertOne({"Marks":86,"Name":"Bob"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3e319c03d395bdc2134706")
}
> db.demo214.insertOne({"Marks":78,"Name":"Carol"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3e31a403d395bdc2134707")
}

2. 登録したドキュメントの確認

挿入したすべてのドキュメントは、find() メソッドで確認できます。

> db.demo214.find();

実行すると、次のような出力が得られます。

{ "_id" : ObjectId("5e3e319403d395bdc2134705"), "Marks" : 56, "Name" : "David" }
{ "_id" : ObjectId("5e3e319c03d395bdc2134706"), "Marks" : 86, "Name" : "Bob" }
{ "_id" : ObjectId("5e3e31a403d395bdc2134707"), "Marks" : 78, "Name" : "Carol" }

3. aggregate()と$avgで平均値を計算する

続いて、MongoDBで特定のフィールドの平均値を計算するクエリを見ていきましょう。ポイントは、$group ステージの中で $avg を指定することです。

> db.demo214.aggregate(
...   [
...      {
...        $group:
...        {
...
...           "_id":"_id",
...           AverageValue: { $avg: "$Marks" }
...        }
...      }
...   ]
...)

このクエリを実行すると、「Marks」フィールド全体の平均値が計算され、次のような結果が出力されます。

{ "_id" : "_id", "AverageValue" : 73.33333333333333 }

クエリのポイント解説

$group ステージで "_id": "_id" を指定することにより、すべてのドキュメントがひとつのグループとしてまとめられます。そのうえで AverageValue: { $avg: "$Marks" } と記述することで、Marks フィールドの平均値(約73.33)が算出されます。

また、条件を絞り込んでから平均を計算したい場合は、$group の前に $match ステージを追加すれば、対象となるドキュメントを限定することも可能です。たとえば「60点以上のデータのみ」の平均を求めるといった柔軟な集計にも対応できます。

  1. MongoDBのaggregate()で合計値を計算する方法($sum演算子の使い方)

    MongoDBで合計を計算するには?MongoDBでコレクション内の数値フィールドの合計を求めるには、aggregate()メソッドと$sum演算子を組み合わせて使用します。$groupステージ内で$sumを使うことで、ドキュメント全体またはグループごとの合計値を簡単に算出できます。ここでは、実際にサンプルコレクションを作成し、Amountフィールドの合計を計算する手順を解説します。1. サンプルコレクションの作成まず、insertOne()メソッドを使ってドキュメントを挿入し、コレクションを作成します。> db.demo337.insertOne({Amount:100}); {

  2. MongoDBコレクション内の空のフィールドをチェックする方法

    MongoDBのコレクション内に空(空文字列)のフィールドが存在するかどうかを調べたい場合、$exists演算子と$eq演算子を組み合わせて使うのが効果的です。この記事では、実際にコレクションを作成しながら、空のフィールドを持つドキュメントを検索する具体的な手順を解説します。 ポイント:$exists と $eq の組み合わせ MongoDBでは「フィールドが存在するが値が空文字列である」状態と、「フィールド自体が存在しない」「値がnullである」状態は区別されます。そのため、空文字列を正確に検索するには次のような条件を使います。 { フィールド名 : { $exists : true, $