Docs Menu
Docs Home
/
MongoDB マニュアル
/ /

集計ステージ

項目一覧

  • 互換性
  • db.collection.aggregate() Stages
  • db.aggregate() ステージ
  • アップデート可能なステージ

db.collection.aggregate() メソッドと db.aggregate() メソッドでは、パイプラインステージが配列に表示されます。Atlas UI 内で 集計パイプライン ビルダを使用してパイプライン ステージを配置できます。ドキュメントは、ステージを順番に通過します。

以下の環境でホストされているデプロイメントにパイプラインステージを使用できます。

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

$out$merge$geoNear$changeStream 、および$changeStreamSplitLargeEventステージを除くすべてのステージは、パイプライン内で複数回使用できます。

注意

構文や例など、特定の演算子の詳細については、演算子のリファレンスページへのリンクをクリックしてください

db.collection.aggregate( [ { <stage> }, ... ] )
ステージ
説明

ドキュメントに新しいフィールドを追加します。$projectと同様に、 $addFieldsストリーム内の各ドキュメントを再形成します。具体的には、入力ドキュメントの既存のフィールドと新しく追加されたフィールドの両方を含む出力ドキュメントに新しいフィールドを追加します。

$set$addFieldsの別名です。

受信ドキュメントを、指定された式とバケット境界に基づいて、バケットと呼ばれるグループに分類します。
指定された式に基づいて、受信したドキュメントをバケットと呼ばれる特定の数のグループに分類します。指定された数のバケットにドキュメントを均等に分散するために、バケット境界が自動的に決定されます。
コレクションの変更ストリームカーソルを返します。このステージは集計パイプラインで 1 回のみ発生し、第 1 ステージとして実行する必要があります。

16 MB を超える大きな変更ストリームイベントを、変更ストリーム カーソルで返される小さなフラグメントに分割します。

$changeStreamSplitLargeEvent内の $changeStreamパイプラインでのみ使用でき、パイプラインの最終ステージである必要があります。

コレクションまたはビューに関する統計情報を返します。

集計パイプラインのこの段階でのドキュメントの数を返します。

$count 集計アキュムレータとは異なります。

フィールド内の特定の値が欠落しているドキュメントのシーケンス内に新しいドキュメントを作成します。

入力式からリテラル ドキュメントを返します。
同じ入力ドキュメントセット上の単一ステージ内の複数の集計パイプラインを処理します。複数のディメンションまたはファセットにわたるデータを1つの段階で特徴付けることができる多面的な集計を作成できます。

ドキュメント内のnullと欠落しているフィールド値を入力します。

地理空間点への近接性に基づいて、順序が付けられたドキュメントのストリームを返します。地理空間データ用の $match$sort$limit 機能を組み込みます。出力ドキュメントには、追加の距離フィールドが含まれ、ロケーション識別子フィールドを含めることができます。

コレクションに対して再帰的な検索を実行します。各出力ドキュメントに、そのドキュメントの再帰検索のトラバーサル結果を含む新しい配列フィールドを追加します。
入力ドキュメントを指定された識別子式でグループ化し、アキュムレータ式(指定されている場合)を各グループに適用します。すべての入力ドキュメントを消費し、各グループごとに 1 つのドキュメントを出力します。出力ドキュメントには、ID フィールドと、指定されている場合は累積フィールドのみが含まれます。
コレクションの各インデックスの使用に関する統計を返します。
変更されていない最初の n 個のドキュメントをパイプラインに渡しますn は指定された制限です。入力ドキュメントごとに、1 件のドキュメント(最初の n 個のドキュメント)または 0 件のドキュメント(最初の n 個のドキュメントの後)を出力します。
すべてのコレクションまたは特定のコレクションのサンプル クエリを一覧表示します。

指定されたコレクションの既存のAtlas Search インデックスに関する情報を返します。

system.sessionsコレクションに伝達されるまで十分な長さにわたってアクティブであったすべてのセッションを一覧表示します。
同じデータベース内の別のコレクションへの左外部結合を実行して、"join" コレクションのドキュメントをフィルタリングして処理します。
ドキュメントストリームをフィルタリングして、一致するドキュメントのみが変更されずに次のパイプラインステージに渡されるようにします。$match標準の MongoDB クエリを使用します。入力ドキュメントごとに、1 件のドキュメント(一致)または 0 件のドキュメント(一致なし)を出力します。
集約パイプラインの結果ドキュメントをコレクションに書き込みます。ステージは(新しいドキュメントの挿入、ドキュメントのマージ、ドキュメントの置換、既存のドキュメントの保持、操作の失敗、カスタムアップデートパイプラインによるドキュメントの処理)の結果を出力コレクションに組み込むことができます。$mergeステージを使用するには、パイプラインの最後のステージである必要があります。
集約パイプラインの結果ドキュメントをコレクションに書き込みます。$outステージを使用するには、パイプラインの最後のステージである必要があります。
コレクションのプラン キャッシュ情報を返します。

新しいフィールドを追加したり、既存のフィールドを削除したりして、ストリーム内の各ドキュメントを再構築します。入力ドキュメント 1 件ごとに、1つのドキュメントを出力します。

既存のフィールドを削除するには、 $unsetも参照してください。

記録されたクエリの実行時間統計を返します。

警告

$queryStats集計ステージはサポートされておらず、将来のリリースで安定することは保証されません。 このステージの特定の出力形式に依存する機能はビルドしないでください。出力は将来のリリースで変更される可能性があるためです。

ドキュメント自体に保存されている情報に基づいて各ドキュメントのコンテンツを制限することにより、ストリーム内の各ドキュメントを再構築します。$project$matchの機能を組み合わせます。フィールド レベルのリダクションを実装するために使用できます。入力ドキュメントごとに、1 件または 0 件のドキュメントを出力します。

指定された埋め込みドキュメントでドキュメントを置き換えます。この操作により、_id フィールドを含む入力ドキュメント内の既存のフィールドがすべて置き換えられます。入力ドキュメントに埋め込まれているドキュメントを指定して、埋め込まれたドキュメントをトップレベルにプロモートします。

$replaceWith$replaceRootステージの別名です。

指定された埋め込みドキュメントでドキュメントを置き換えます。この操作により、_id フィールドを含む入力ドキュメント内の既存のフィールドがすべて置き換えられます。入力ドキュメントに埋め込まれているドキュメントを指定して、埋め込まれたドキュメントをトップレベルにプロモートします。

$replaceWith$replaceRootステージの別名です。

入力から指定した数のドキュメントをランダムに選択します。

Atlasコレクション内のフィールドの全文検索を実行します。

注意

$search は、MongoDB Atlas クラスターでのみ使用可能であり、自己管理型の配置では使用できません。詳細については、「Atlas Search 集計パイプラインステージ」を参照してください。

Atlas コレクションに対する Atlas Search クエリの結果として、さまざまなタイプのメタデータ結果ドキュメントを返します。

注意

$searchMeta は、MongoDB v 4.4.9以上を実行している MongoDB Atlas クラスターでのみ使用でき、自己管理型のデプロイメントでは使用できません。 詳細については、 「 Atlas Search 集計パイプライン ステージ」 を参照してください。

ドキュメントに新しいフィールドを追加します。$projectと同様に、 $setストリーム内の各ドキュメントを再形成します。具体的には、入力ドキュメントの既存のフィールドと新しく追加されたフィールドの両方を含む出力ドキュメントに新しいフィールドを追加します。

$set$addFieldsステージの別名です。

ドキュメントをウィンドウにグループ化し、各ウィンドウのドキュメントに 1 つまたは複数のオペレーターを適用します。

バージョン 5.0 で追加

最初の n 個のドキュメント( n は指定されたスキップ番号)をスキップし、残りのドキュメントは変更されずにパイプラインに渡されます。入力ドキュメントごとに、1 件のドキュメント(最初の n 個のドキュメント)または 0 件のドキュメント(最初の n 個のドキュメントの後)を出力します。
指定されたソートキーでドキュメント ストリームを並べ替えます。順序のみが変更されます。ドキュメントは変更されません。入力ドキュメント 1 件ごとに、1つのドキュメントを出力します。
指定された式の値に基づいて受信ドキュメントをグループ化し、個別のグループごとにドキュメントの数を計算します。
2 つのコレクションの和集合を実行します。つまり、2つのコレクションのパイプライン結果を1つの結果セットに結合します。

ドキュメントからフィールドを削除または除外します。

$unsetは、フィールドを削除する$projectステージの別名です。

入力ドキュメントから配列フィールドを分解して、要素のドキュメントを出力します。各出力ドキュメントは、配列を要素の値で置き換えます。入力ドキュメントごとに n 個のドキュメントを出力します。n は配列要素の数で、空の配列の場合は 0 になる場合もあります。

Atlas コレクションの指定されたフィールド内のベクトルに対して ANN 検索を実行します。

バージョン 7.0.2 の新機能

注意

$vectorSearch は、MongoDB v 6.0.11以上を実行している MongoDB Atlas クラスターでのみ使用でき、自己管理型のデプロイメントでは使用できません。 詳細については、 「 Atlas Search 集計パイプライン ステージ」 を参照してください。

パイプラインステージで使用する集計式演算子については、「集計演算子」を参照してください。

MongoDB はdb.aggregate()メソッドも提供しています。

db.aggregate( [ { <stage> }, ... ] )

次のステージでは、db.aggregate() メソッドではなくdb.collection.aggregate() メソッドを使用します。

ステージ
説明
コレクションの変更ストリームカーソルを返します。このステージは集計パイプラインで 1 回のみ発生し、第 1 ステージとして実行する必要があります。
MongoDB 配置のアクティブな操作および休止中の操作に関する情報を返します。
入力値からリテラル ドキュメントを返します。
現在接続されているmongosまたはmongodインスタンスで最近使用されたすべてのアクティブ セッションを一覧表示します。これらのセッションはまだsystem.sessionsコレクションに伝播されていない可能性があります。

集約パイプラインは、次の更新に使用できます。

更新の場合、パイプラインは以下のステージで構成されます。

戻る

コマンド