Docs Home → アプリケーションの開発 → Python ドライバー → PyMongo
集計によるデータの変換
Overview
このガイドでは、PyMongo を使用して集計操作を実行する方法を学習できます。
集計操作により MongoDB コレクション内のデータが処理され、計算結果が返されます。 クエリ API の一部である MongoDB 集計フレームワークは、データ処理パイプラインの概念をモデル化したものです。 ドキュメントは 1 つ以上の ステージを含むパイプラインに投入され、そこで集計結果に変換されます。
集計操作は自動車工場に似ています。工場内の組立ラインには、ドリルや溶接機のような、特定の作業をするための専用工具を備えた組立ステーションがあります。未加工のパーツが工場に搬入され、組立ラインで完成品に加工、組み立てられます。
集計パイプラインは組み立てライン、集計ステージは組み立てステーション、演算子式は専用ツールです。
集計操作と検索操作
検索操作を使用して、次のアクションを実行できます。
どのドキュメントを返すかを選ぶ
どのフィールドを返すかを選ぶ
結果を並べ替える
集計操作を使用して、次のアクションを実行できます。
検索操作の実行
フィールドの名前を変更する
フィールドを計算する
データを要約する
値をグループ化する
制限
集計操作を使用するときは、次の制限に注意してください。
返されたドキュメントは、 BSON ドキュメント サイズの制限である16メガバイトに違反していない必要があります。
パイプライン ステージには、デフォルトで100 MB のメモリ制限があります。 この制限を超えるには、
aggregate()
メソッドのallowDiskUse
キーワード引数を使用します。
重要
$graphLookup の例外
$graphLookupステージは100メガバイトという厳格なメモリ制限があり、 allowDiskUse
パラメータを無視します。
集計の例
注意
この例では、 Atlas サンプル データセットのsample_restaurants.restaurants
コレクションを使用します。 MongoDB Atlas クラスターを無料で作成して、サンプル データセットをロードする方法については、 「 PyMongo を使い始める 」を参照してください。
集計を実行するには、集計ステージのリストを collection.aggregate()
メソッドに渡します。
次のコード例では、ニューヨークの各地区のケーキの数のカウントを生成します。 そのために、次のステージを持つ集計パイプラインを使用します。
$matchステージで、
cuisine
フィールドに値"Bakery"
が含まれるドキュメントをフィルタリングします。一致するドキュメントを
borough
フィールドでグループ化し、個別の 値ごとにドキュメントの数を累積する$groupステージ。
# Define an aggregation pipeline with a match stage and a group stage pipeline = [ { "$match": { "cuisine": "Bakery" } }, { "$group": { "_id": "$borough", "count": { "$sum": 1 } } } ] # Execute the aggregation aggCursor = collection.aggregate(pipeline) # Print the aggregated results for document in aggCursor: print(document)
上記のコード例では、次のような出力が生成されます。
{'_id': 'Bronx', 'count': 71} {'_id': 'Brooklyn', 'count': 173} {'_id': 'Missing', 'count': 2} {'_id': 'Manhattan', 'count': 221} {'_id': 'Queens', 'count': 204} {'_id': 'Staten Island', 'count': 20}
集計の説明
MongoDB が操作を実行する方法に関する情報を表示するには、それを説明するように MongoDB に指示できます。 MongoDB が操作を説明すると、実行プランとパフォーマンス統計が返されます。 実行プランは、MongoDB が操作を完了できる潜在的な方法です。 MongoDB に操作を説明するように指示すると、MongoDB が実行したプランと拒否された実行プランの両方が返されます。
集計操作を説明するには、次のいずれかを使用できます PyMongoExplain ライブラリまたはデータベースコマンド。各方法の例を表示するには、以下の対応するタブを選択します。
Tip
Python のpprint
モジュールを使用すると、説明結果を読みやすくできます。
import pprint ... pprint.pp(result)
詳細情報
MongoDB Server マニュアル
式演算子の完全なリストを表示するには、「 集計演算子 」を参照してください。
集計パイプラインの組み立てと例については、「 集計パイプライン 」を参照してください。
パイプライン ステージの作成の詳細については、「 集計ステージ 」を参照してください。
MongoDB 操作の説明の詳細については、「 出力とクエリ プランの説明 」を参照してください。
集計チュートリアル
一般的な集計タスクの各段階の説明については、集計チュートリアル を参照してください。
API ドキュメント
PyMongo を使用して集計操作を実行する方法の詳細については、次の API ドキュメントを参照してください。