MongoDBで$groupを使ってドキュメントの価格レコードを合計する方法
MongoDBでドキュメント内の価格(Price)フィールドの合計を求めるには、集計パイプライン(Aggregation Pipeline)の $group ステージを使用し、その中で $sum 演算子を使って値を加算します。本記事では、実際のコード例を交えながら、データの作成から合計値の取得までの手順を解説します。
1. コレクションにドキュメントを作成する
まずは insertOne() メソッドを使って、サンプルとなるコレクション「demo527」にドキュメントを挿入していきます。
> db.demo527.insertOne({"Price":45.5});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e8aff2fef4dcbee04fbbbdc")
}
> db.demo527.insertOne({"Price":55.5});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e8aff34ef4dcbee04fbbbdd")
}
> db.demo527.insertOne({"Price":100.4});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e8aff39ef4dcbee04fbbbde")
}
> db.demo527.insertOne({"Price":200.6});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e8aff40ef4dcbee04fbbbdf")
}これで、4つの価格データを持つコレクションが完成しました。
2. find()メソッドですべてのドキュメントを表示する
挿入したドキュメントを確認するには、find() メソッドを使用します。
> db.demo527.find();
上記のクエリを実行すると、次のような出力が得られます。
{ "_id" : ObjectId("5e8aff2fef4dcbee04fbbbdc"), "Price" : 45.5 }
{ "_id" : ObjectId("5e8aff34ef4dcbee04fbbbdd"), "Price" : 55.5 }
{ "_id" : ObjectId("5e8aff39ef4dcbee04fbbbde"), "Price" : 100.4 }
{ "_id" : ObjectId("5e8aff40ef4dcbee04fbbbdf"), "Price" : 200.6 }3. 価格レコードを合計するクエリ
続いて、$group と $sum を使って価格レコードを合計するクエリを見ていきましょう。
> db.demo527.aggregate([ { $group: { _id:null, totalPrice:{"$sum":"$Price"}} } ])ここでのポイントは、_id を null に設定している点です。_id: null を指定すると、コレクション内のすべてのドキュメントが単一のグループとして扱われ、全体の合計値を算出できます。
このクエリを実行すると、次のような結果が出力されます。
{ "_id" : null, "totalPrice" : 402 }すべての Price フィールドの値(45.5 + 55.5 + 100.4 + 200.6)が加算され、「totalPrice」として 402 という合計値が返されました。
まとめ
MongoDBで数値フィールドの合計を求める際は、aggregate() メソッド内で $group ステージを定義し、$sum 演算子で対象フィールドを指定するのが基本の流れです。条件付きでグループ化したい場合は _id に任意のフィールドを指定することもできるため、用途に応じて柔軟に活用してみてください。
-
MongoDBで異なるコレクション要素の一意のプロパティを合計して結果の価格を取得する方法
MongoDBで複数のコレクション要素(ドキュメント)にまたがる一意のプロパティの値を合計し、最終的な価格(Price)を取得したいケースは少なくありません。こうした処理を実現するには、集計パイプライン(Aggregation Pipeline)の $cond 演算子と $group ステージを組み合わせます。 この記事では、実際のサンプルコードを交えながら、手順を段階的に解説していきます。 サンプルコレクションの作成 まず、insertOne() メソッドを使ってドキュメントを挿入し、コレクション「demo580」を作成します。 > db.demo580.insertOne( ...
-
MongoDBで一意のレコードのみを表示し、重複データを除外する方法
MongoDBのdistinct()メソッドで重複を除外するMongoDBで一意(ユニーク)なレコードのみを表示したい場合は、distinct()メソッドを使用します。このメソッドは、指定したフィールドの重複しない値だけを配列として返してくれます。ここでは、実際にサンプルコレクションを作成しながら、その使い方を確認していきましょう。1. サンプルコレクションの作成まず、insertOne()メソッドを使って、意図的に重複した名前を含むドキュメントをいくつか挿入します。> db.demo613.insertOne({Name:Chris});{ acknowledged : tru