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点以上のデータのみ」の平均を求めるといった柔軟な集計にも対応できます。
-
MongoDBのaggregate()で合計値を計算する方法($sum演算子の使い方)
MongoDBで合計を計算するには?MongoDBでコレクション内の数値フィールドの合計を求めるには、aggregate()メソッドと$sum演算子を組み合わせて使用します。$groupステージ内で$sumを使うことで、ドキュメント全体またはグループごとの合計値を簡単に算出できます。ここでは、実際にサンプルコレクションを作成し、Amountフィールドの合計を計算する手順を解説します。1. サンプルコレクションの作成まず、insertOne()メソッドを使ってドキュメントを挿入し、コレクションを作成します。> db.demo337.insertOne({Amount:100}); {
-
MongoDBコレクション内の空のフィールドをチェックする方法
MongoDBのコレクション内に空(空文字列)のフィールドが存在するかどうかを調べたい場合、$exists演算子と$eq演算子を組み合わせて使うのが効果的です。この記事では、実際にコレクションを作成しながら、空のフィールドを持つドキュメントを検索する具体的な手順を解説します。 ポイント:$exists と $eq の組み合わせ MongoDBでは「フィールドが存在するが値が空文字列である」状態と、「フィールド自体が存在しない」「値がnullである」状態は区別されます。そのため、空文字列を正確に検索するには次のような条件を使います。 { フィールド名 : { $exists : true, $