MongoDBのaggregate()で合計値を計算する方法($sum演算子の使い方)
MongoDBで合計を計算するには?
MongoDBでコレクション内の数値フィールドの合計を求めるには、aggregate()メソッドと$sum演算子を組み合わせて使用します。$groupステージ内で$sumを使うことで、ドキュメント全体またはグループごとの合計値を簡単に算出できます。
ここでは、実際にサンプルコレクションを作成し、Amountフィールドの合計を計算する手順を解説します。
1. サンプルコレクションの作成
まず、insertOne()メソッドを使ってドキュメントを挿入し、コレクションを作成します。
> db.demo337.insertOne({"Amount":100});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e5231e5f8647eb59e56209b")
}
> db.demo337.insertOne({"Amount":500});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e5231e9f8647eb59e56209c")
}
> db.demo337.insertOne({"Amount":400});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e5231ebf8647eb59e56209d")
}2. 登録したドキュメントの確認
find()メソッドを使うと、コレクション内のすべてのドキュメントを表示できます。
> db.demo337.find();
このクエリを実行すると、次のような出力が得られます。
{ "_id" : ObjectId("5e5231e5f8647eb59e56209b"), "Amount" : 100 }
{ "_id" : ObjectId("5e5231e9f8647eb59e56209c"), "Amount" : 500 }
{ "_id" : ObjectId("5e5231ebf8647eb59e56209d"), "Amount" : 400 }3. aggregate()と$sumで合計を計算する
MongoDBで合計値を計算するためのクエリは以下の通りです。$groupステージで_idにnullを指定すると、コレクション全体を1つのグループとして扱い、全ドキュメントの合計を求められます。
> db.demo337.aggregate(
... [
... {
... $group:
... {
... _id:null,
... totalAmount: { $sum:"$Amount" }
... }
... }
... ]
... );4. 実行結果
上記の集計クエリを実行すると、次のようにtotalAmountフィールドに合計値が出力されます。
{ "_id" : null, "totalAmount" : 1000 }このように、100 + 500 + 400 の合計である 1000 が正しく計算されました。
ポイントまとめ
- $sumは集計(アグリゲーション)パイプライン内で使用できる累積演算子です。
- $groupの_idにnullを指定すると、コレクション全体に対して単一の合計値を計算できます。
- _idに特定のフィールドを指定すれば、カテゴリごとの小計など、グループ別の集計も可能です。
-
MongoDBの$matchを使って日付条件でドキュメントを抽出する方法
MongoDBの$matchで日付を一致させる方法MongoDBで特定の日付条件に一致するドキュメントを抽出したい場合は、集計(aggregation)フレームワークの$matchステージを使用します。$matchは、指定した条件に合致するドキュメントだけを次のパイプラインステージへ渡すフィルターの役割を果たします。この記事では、実際にコレクションを作成し、$matchを使って日付条件でデータを絞り込む手順を解説します。1. サンプルコレクションの作成まず、ShippingDate(出荷日)フィールドを持つドキュメントをいくつか作成しましょう。> db.demo491.insertOne
-
MongoDBにJavaScript関数を保存・実行する方法をわかりやすく解説
MongoDBに保存されたJavaScriptを操作する方法 MongoDBでは、JavaScriptの関数をデータベース内の特別なコレクション「system.js」に保存できます。この仕組みを利用すれば、よく使う処理をサーバー側に登録しておき、必要なときにいつでも呼び出すことが可能です。関数の保存には db.system.js.save() メソッドを使用します。 JavaScript関数を保存する基本構文 db.system.js.save({ _id: anyFunctionName, value: function (returnValue) { re