allowDiskUse() (ソートでのディスク使用を許可)

最終更新:2026-10-09

allowDiskUse() (ソートでのディスク使用を許可)

allowDiskUse() は、sort() など大きなメモリを要求するブロッキング操作で、カーソルがディスクに溢れ出せるようにします: `db.users.find().sort({ age: -1 }).allowDiskUse()`。デフォルトでは 100MB のメモリ上限を超えるソートはエラーになりますが、このフラグで中間結果が一時ファイルに格納されます。巨大なソートやアグリゲーションをディスク I/O のパフォーマンスコストと引き換えに救います。

カテゴリカーソル
MongoDB バージョン1.0+
例の言語mongosh(シェル)

📝 構文

db.<collection>.find(<filter>).sort(<sortKey>).allowDiskUse()

戻り値:ディスクへのスピルを有効にしたカーソル(チェーン可能)。

▶ 例

以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):

// allowDiskUse: 巨大なソートのディスク溢れを許可する
const result = db.logs.find({ level: 'error' })
  .sort({ timestamp: -1 })
  .allowDiskUse()
  .toArray()
result.length

出力:

1200

📌 注意事項

さらなる実践ケースを近日公開予定。

📚 関連チュートリアル

❓ よくある質問

QallowDiskUse はいつ必要ですか?
Aソートやアグリゲーションが 100MB のメモリ上限を超えてエラーになる場合に有効にします。例: 巨大なコレクション全体のソート。
QallowDiskUse はパフォーマンスを損ないますか?
Aはい。ディスク溢れは純粋なメモリ内処理よりはるかに遅いです。インデックスに支えられたソートで回避するのが最善です。
QallowDiskUse はアグリゲーションのオプションと同じですか?
A意味論は同じです。中間結果のディスク溢れ。カーソルメソッドは find().sort() 用、アグリゲーションのオプションは aggregate() 用です。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%