AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

集計パイプラインの制限

aggregateコマンドを使用した集計操作には次の制限があります。

コマンドは、カーソルを返すか、結果をコレクションに保存できますaggregate 。結果セット内の各ドキュメントには、16 メビバイトのBSONドキュメント サイズ の制限 が適用されます。いずれかのドキュメントがBSONドキュメント サイズ の制限を超えると、集計でエラーが発生します。この制限は、戻されたドキュメントにのみ適用されます。 パイプライン処理中に、ドキュメントがこのサイズを超える場合があります。 db.collection.aggregate()メソッドはデフォルトでカーソルを返します。

MongoDBは、単一のパイプラインで許可される集計パイプラインステージの数を 1000 に制限します。

集計パイプラインが解析される前または解析された後に ステージの制限を超えると、エラーが発生します。

MongoDB 6.0 以降のバージョンでは、実行に 100 MB を超えるメモリを必要とするパイプライン ステージが、デフォルトで一時ファイルをディスクに書き込むかどうかをallowDiskUseByDefaultパラメーターが制御します。

  • allowDiskUseByDefaulttrueに設定されている場合、実行に 100 MB を超えるメモリを必要とするパイプライン ステージは、デフォルトで一時ファイルをディスクに書き込みます。{ allowDiskUse: false }オプションを使用して、特定のfindまたはaggregateコマンドの一時ファイルのディスクへの書き込みを無効にすることができます。

  • allowDiskUseByDefaultfalseに設定されている場合、実行に 100 MB を超えるメモリを必要とするパイプライン ステージでは、デフォルトでエラーが発生します。{ allowDiskUse: true }オプションを使用して、特定のfindまたはaggregateの一時ファイルのディスクへの書き込みを有効にすることができます。

$search 集計ステージは別のプロセスで実行されるため、 RAM の 100 メガバイトに制限されません。

allowDiskUsetrue の場合に一時ファイルをディスクに書き込むことができるステージの例は次のとおりです。

注意

パイプライン ステージはドキュメントのストリームに対して動作し、各パイプライン ステージはドキュメントを取り込んで処理し、その結果となるドキュメントを出力します。

一部のステージでは、受信したドキュメントをすべて処理するまでドキュメントを出力できません。これらのパイプライン ステージは、すべての受信ドキュメントが処理されるまで、ステージ出力を RAM に保持する必要があります。その結果、これらのパイプライン ステージでは 100 MB の制限を超えるスペースが必要になる場合があります。

$sortパイプライン ステージのいずれかの結果が制限を超える場合は、$limit ステージの追加を検討してください。

プロファイラーのログ メッセージ診断ログ メッセージには、メモリの制限により集計ステージが一時ファイルにデータが書き込まれた場合、usedDisk インジケーターが含められます。