MongoDB(25) - 集計処理(aggregate)⑥コレクション全体の集計

今回は、コレクション全体の集計を行います。

サンプルデータ

以前用意した会社の部、課、従業員データを使用します。

集計処理(aggregate)①データ準備 - https://ailog.site/2021/09/02/2021/0902/

コレクション全体の集計

$groupを使って、コレクション全体の集計を行うことができます。

コレクション全体の集計を行うためには_idにnullを指定します。

[Mongoシェル]

1
2
3
4
> db.employee.aggregate([
... {$group: {_id:null, total:{$sum:"$salary"}}}
... ])
{ "_id" : null, "total" : 1620000 }

従業員コレクション(employee)全体の給料合計を集計することができました。

Pythonで操作

上記の集計処理をPythonで行うと、次のようになります。

pythonではnullの代わりにNoneを指定します。

[ソースコード]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import pymongo
from pymongo import MongoClient

# MongoDB操作用のインスタンスを作成
client = MongoClient() # [IPとポートを指定する場合] MongoClient('10.200.243.203', 27017')

# データベースの取得
db1 = client.db1

# コレクション全体の集計
docs = db1.employee.aggregate([
{'$group': {'_id':None, 'total':{'$sum':'$salary'}}}
])
for doc in docs:
print(doc)

次回は、データ数のカウントを行います。