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

集計パイプラインの制限

項目一覧

  • 結果サイズの制限
  • ステージ数の制限
  • メモリ制限

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集計ステージは別のプロセスで実行されるため、 100 MB の RAM に制限されません。

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

注意

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

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

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

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

戻る

最適化