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

集計パイプラインの制限

項目一覧

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

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

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

バージョン 5.0 での変更: MongoDB 5.0 では、単一のパイプラインで許可された集計パイプライン ステージ数が 1000 に制限されます。

パイプラインの各ステージには 100 MB の RAM 制限があります。 デフォルトでは、 ステージがこの制限を超えると、MongoDB はエラーを発生させます。 一部のパイプライン ステージでは、 allowDiskUseオプションを使用して一時ファイルにデータを書込む集計パイプライン ステージを有効にすることで、パイプライン処理がより多くのスペースを消費するようにできます。

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

allowDiskUsetrueの場合にディスクに書き出すことができるステージの例は次のとおりです。

  • $bucket

  • $bucketAuto

  • $group

  • $sort ソート操作がインデックスでサポートされていない場合

  • $sortByCount

注意

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

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

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

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

戻る

最適化