292: QueryExceededMemoryLimitNoDiskUseAllowed (エラーコード 292)
MongoDB意味
クエリまたは集計ステージが許可されたメモリ上限 (デフォルト 100 MB) を超え、ディスクへの書き込みが許可されていなかったため失敗した。通常はソートまたはグループステージで見られる。
原因
インデックスのない大量データのメモリ内ソート、大きな $group/$sort 集計ステージ、非常に大きな中間結果セット、allowDiskUse:false の設定。
対処方法
allowDiskUse:true オプションで集計時のディスクへの書出しを許可する: db.collection.aggregate(pipeline, {allowDiskUse:true})。ソート対象フィールドにインデックスを作成してメモリ使用量を減らす。パイプラインの早い段階で $match により絞り込み、処理データ量を減らす。必要なら結果をページングする。MongoDB 6.0 以降では、ほとんどの場合ディスク使用がデフォルトで有効。