集計パイプラインは、ドキュメントを処理する 1 つ以上の ステージ で構成されます。これらのドキュメントは、コレクション、ビュー、または特別に設計された ステージから取得されます。
各ステージは、入力ドキュメントに対して操作を実行します。例、 ステージでは $filter ドキュメント、$group ドキュメント、および 値の計算が可能です。ステージが出力するドキュメントは、パイプラインの次のステージに渡されます。
集計パイプラインは、ドキュメントのグループの結果を返す場合があります。「 集計パイプラインによる更新 」に示されているステージを使用して、集計パイプラインでドキュメントを更新することもできます。
注意
aggregation pipelinedb.collection.aggregate()collectionメソッドで実行される は、パイプラインに$merge または$out ステージが含まれていない限り、 内のドキュメントを変更しません。
MongoDB Atlas UI で MongoDB Atlas 配置に対して集計パイプラインを実行すると、各ステージで結果をプレビューできます。
You can also use an LLM to generate aggregation pipelines from natural language. To learn more, see Natural Language to MongoDB Queries.
完全な集計パイプラインの例
The Complete Aggregation Pipeline Tutorials section contains step-by-step tutorials for common aggregation tasks, with examples for MongoDB Shell and each of the official MongoDB drivers.
集計パイプラインの実行
集計パイプラインを実行するには、以下を使用します。
追加の集計パイプライン ステージの詳細
aggregation pipeline 、ドキュメントを処理する 1 つ以上のステージで構成されます。
ステージでは、入力ドキュメントごとに 1 つのドキュメントを出力する必要はありません。一部のステージでは、新しいドキュメントを作成したり、ドキュメントをフィルターで除外したりする場合があります。
すべての集計ステージについては、「集計ステージ」を参照してください。
式と演算子
集計パイプラインでは、式によってパイプライン内の各入力ドキュメントをステージが処理する方法を定義します。例えば、式では含めるドキュメント、フィールドの変換方法、または新しい値の計算方法を定義できます。
一部の集計パイプライン ステージは式を受け入れます。 演算子は入力式に基づいて値を計算します。
MongoDB クエリ言語では、次のコンポーネントから式を構築できます。
コンポーネント | 例 |
|---|---|
定数 |
|
演算子 | |
フィールドパス式 |
|
例、{ $add: [ 3, "$inventory.total" ] } は、$add 演算子と 2 つのオペランドで構成される式です。
定数
3The field path expression
"$inventory.total"
式は、入力ドキュメントのパスinventory.totalの値に3を追加した結果を返します。
フィールドパス
フィールドパス式は、入力ドキュメント内のフィールドにアクセスします。フィールド名の前にドル記号 $ を付けます。例えば、"$user" は user フィールドを参照し、"$user.name" は埋め込み user.name フィールドを参照します。
その他の例については、「フィールドパス」を参照してください。
集計パイプラインを使用したドキュメントの更新
集計パイプラインでドキュメントを更新するには、以下を使用します。
その他の考慮事項
集計パイプラインの制限
値の型と結果のサイズの制限については、「集計パイプラインの制限」を参照してください。
集計パイプラインとシャーディングされたコレクション
集計パイプラインは、シャーディングされたコレクションに対する操作をサポートします。詳細については、集計パイプラインとシャーディングされたコレクション を参照してください。
重要
map-reduce の代替としての集計パイプライン
MongoDB 5.0 以降、map-reduce は非推奨になっています。
map-reduce を集計パイプラインに置き換える例については、以下を参照してください。
詳細
集計パイプラインの詳細については、以下を参照してください。