今回は、簡単な集計として従業員の課ごとの給料合計を集計してみます。
サンプルデータ
前回用意した会社の部、課、従業員データを使用します。
集計処理(aggregate)①データ準備 - https://ailog.site/2021/09/02/2021/0902/
課ごとの給料合計
指定したフィールドで集計を行うためにはaggregateの引数に$groupを指定し、集計条件を設定します。
合計を表示するためには$sumを集計条件に指定します。
従業員コレクション(employee)から、課ごとの給料合計を表示してみます。
[Mongoシェル]
1 | > db.employee.aggregate([ |
集計条件の設定内容は以下の通りです。
- _idに指定したフィールド($k_id)で集計を行います。
フィールドは“$フィールド名”と先頭に$を追加して指定します。
SQLだと[ group by k_id ]の意味です。 - salary_totalは集計結果のフィールド名です。
SQLだと[ select salary_total ]の意味です。 - 集計関数として$sumを指定し、集計するフィールドは“$フィールド名”と先頭に$を追加して設定します。
SQLだと[ sum(salary) ]の意味です。
SQLに慣れている人ですと、フィールド名の先頭に$をつけたり、記述がやや込み入って見えたりするかもしれませんが、1つ1つ対応関係を確認すれば読み解けるかと思います。
Pythonで操作
上記の集計処理をPythonで行うと、次のようになります。
[ソースコード]
1 | import pymongo |
次回は、検索条件に年齢を加えて集計を行います。