MongoDBで2つのフィールド(列)の合計を計算し、別のフィールドに保存する方法
MongoDBで2つのフィールド(列)の合計を求めるには、集計パイプラインの $add 演算子を使用します。この記事では、サンプルコレクションを作成し、実際に合計値を計算する手順を順番に解説します。
1. サンプルコレクションの作成
まず、insertOne() メソッドを使ってドキュメントを挿入し、コレクション demo291 を作成します。
> db.demo291.insertOne({"Value1":10,"Value2":50});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e4c0e1e5d93261e4bc9ea2f")
}
2. ドキュメントの確認
find() メソッドを使って、コレクション内のすべてのドキュメントを表示します。
> db.demo291.find();
実行すると、次のような出力が得られます。
{ "_id" : ObjectId("5e4c0e1e5d93261e4bc9ea2f"), "Value1" : 10, "Value2" : 50 }
3. 2つのフィールドの合計を計算する
次のクエリでは、aggregate() の $project ステージ内で $add を使用し、Value1 と Value2 の合計を新しいフィールド「Value3」として出力しています。
> db.demo291.aggregate(
... { "$project" : {
... 'Value1' : '$Value1',
... 'Value2' : '$Value2',
... 'Value3' : { '$add' : [ '$Value1', '$Value2' ] }
... }
... }
...);
実行結果は以下のとおりです。「Value3」に合計値が格納されていることが確認できます。
{ "_id" : ObjectId("5e4c0e1e5d93261e4bc9ea2f"), "Value1" : 10, "Value2" : 50, "Value3" : 60 }
補足:計算結果をコレクションに永続化するには
上記の $project を使う方法は、あくまでクエリ結果として合計値を表示するものです。計算結果をドキュメント自体に保存したい場合は、MongoDB 4.2以降で利用できる更新パイプラインを使用すると便利です。
> db.demo291.updateMany(
... {},
... [ { "$set": { "Value3": { "$add": ["$Value1", "$Value2"] } } } ]
... );
このように $set と $add を組み合わせることで、既存のドキュメントに「Value3」フィールドを追加し、合計値を永続的に保存できます。用途に応じて、表示用の集計と保存用の更新を使い分けるとよいでしょう。
-
Pandasで2つの列間の相関関係を取得する方法
Pandasでは、.corr()メソッドを使うことで、DataFrame内の2つの列(カラム)間の相関係数を簡単に求めることができます。デフォルトではピアソンの相関係数が計算され、その値は-1から1の範囲で表されます。値が1に近いほど正の相関が強く、-1に近いほど負の相関が強いことを意味します。ここでは、具体的な例を通してこのメソッドの使い方を解説します。 手順 サイズ変更可能な2次元の表形式データであるDataFrame(df)を作成します。 入力のDataFrame(df)を表示して内容を確認します。 相関を調べたい列名をcol1とcol2という変数に代入します。 df[col1].co
-
【Python・Pandas】データフレームの特定の列の合計値を取得する方法
データ分析をしていると、データフレーム(DataFrame)の中から特定の列だけの合計値を求めたい場面によく出会います。そんなときに便利なのが、Pandasのsum関数です。 合計を計算したい列をsum関数に渡すだけで、その列の合計値を簡単に取得できます。さらに、axis引数を指定すれば、列方向・行方向のどちらで集計するかも自由に制御可能です。 それでは、具体的なコード例を見ていきましょう。 サンプルコード import pandas as pd my_data = { Name: pd.Series([Tom, Jane, Vin, Eve, Will]), Age: p