集計操作
集計操作は、複数のドキュメントを処理し、計算結果を返します。 集計操作を使用すると、次のことができます。
複数のドキュメントの値をグループ化します。
グループ化されたデータに対して操作を実行して、1 つの結果を返します。
時間の経過に伴うデータの変化を分析します。
集計操作を実行するには、次を使用できます。
MongoDB Atlas でホストされている配置の UI で集計パイプラインを実行できます。
集計パイプライン
集計パイプラインは、ドキュメントを処理する 1 つ以上の ステージで構成されます。
各ステージは、入力ドキュメントに対して操作を実行します。 例えば、ステージでは、文書のフィルター処理、文書のグループ化、および値の計算を行うことができます。
ステージから出力された文書は、次のステージに渡されます。
aggregation pipelineドキュメントのグループの結果を返すことができます。 たとえば、合計値、平均値、最大値、最小値を返します。
aggregation pipeline aggregation pipelineでドキュメントを更新できます。
注意
db.collection.aggregate()
メソッドで実行される集計パイプラインは、パイプラインに $merge
または $out
ステージが含まれていない限り、コレクション内のドキュメントを変更しません。
aggregation pipelineの例
次の集計パイプラインの例には 2 つのステージが含まれており、ピザ名ごとにグループ化された中サイズのピザの合計注文数量を返します。
db.orders.aggregate( [ // Stage 1: Filter pizza order documents by pizza size { $match: { size: "medium" } }, // Stage 2: Group remaining documents by pizza name and calculate total quantity { $group: { _id: "$name", totalQuantity: { $sum: "$quantity" } } } ] )
$match
段階:
ピザ注文ドキュメントを、
medium
のsize
を持つピザにフィルタリングします。残りのドキュメントを
$group
ステージに渡します。
$group
段階:
残りのドキュメントをピザ
name
でグループ化します。$sum
を使用して、各ピザname
の合計注文quantity
を計算します。合計は、 aggregation pipelineによって返されるtotalQuantity
フィールドに格納されます。
サンプル入力ドキュメントを含む実行可能な例については、 「完全なaggregation pipelineの例」を参照してください。
集計パイプラインの詳細
集計パイプラインの詳細については、 集計パイプラインを参照してください。
単一目的の集計方法
単一目的の集約方法は、単一のcollectionからドキュメントを集約します。 この方法は単純ですが、 aggregation pipelineの機能が欠けています。
方式 | 説明 |
---|---|
collectionまたはビュー内のドキュメントのおおよその数を返します。 | |
collectionまたはビュー内のドキュメントの数を返します。 | |
指定されたフィールドに対して異なる値を持つドキュメントの範囲を返します。 |