定義
cursor.allowDiskUse()重要
mongosh メソッド
これは
mongoshメソッドです。 これは、Node.jsまたはその他のプログラミング言語固有のドライバー メソッドのドキュメントではありません。ほとんどの場合、
mongoshメソッドはレガシーのmongoshell メソッドと同じように動作します。 ただし、一部のレガシー メソッドはmongoshでは利用できません。レガシー
mongoshell のドキュメントについては、対応する MongoDB Server リリースのドキュメントを参照してください。MongoDB API ドライバーについては、各言語のMongoDB ドライバードキュメント を参照してください。
allowDiskUse()を使用すると、ブロッキングソート操作の処理中に MongoDB はディスク上の一時ファイルを使用して、 100メガバイトのシステムメモリ制限を超えるデータを保存できます。 MongoDB100 がブロッキングソート操作に メガバイトを超えるシステム メモリを必要とする場合、クエリが を 指定 し ない限り 、MongoDBcursor.allowDiskUse()はエラーを返します。allowDiskUse()の形式は次のとおりです。db.collection.find(<match>).sort(<sort>).allowDiskUse() 
ブロッキングソート操作の詳細については、「ソートとインデックスの使用」を参照してください。
互換性
このメソッドは、次の環境でホストされている配置で使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
注意
このコマンドは、すべての MongoDB Atlas クラスターでサポートされています。すべてのコマンドに対する Atlas のサポートについては、「サポートされていないコマンド」を参照してください。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
動作
インデックスなしの大きなソートのみをサポート
cursor.allowDiskUse()は、インデックスを使用して応答されるソート操作や、 100 MB 未満のメモリを必要とするインデックスなし(「ブロッキング」)ソート操作には影響しません。 ブロッキングソートとソート インデックスの使用に関する詳細なドキュメントについては、「ソートとインデックスの使用 」を参照してください。
MongoDB がブロッキングソートを実行する必要があるかどうかを確認するには、クエリに cursor.explain() を追加し、explain の結果を確認します。クエリプランに SORT ステージが含まれている場合、MongoDB は 100 MB のメモリ制限に従ってブロッキングソート操作を実行する必要があります。
例
_id のデフォルト インデックスのみを持つコレクション sensors を考えてみましょう。コレクションには、以下と同様のドキュメントが含まれています。
{   "sensor-name" : "TEMP-21425",   "sensor-location" : "Unit 12",   "reading" : {     "timestamp" : Timestamp(1580247215, 1),     "value" : 212,     "unit" : "Fahrenheit"   } } 
次の操作には、フィールドreading.timestampにcursor.sort()が含まれています。 この操作には、ソート操作をサポートするcursor.allowDiskUse()も含まれています。
db.sensors.find({"sensor-location" : "Unit 12"}).   sort({"reading.timestamp" : 1}).   allowDiskUse() 
reading.timestampはインデックスに含まれていないため、MongoDB は要求されたソート順序で結果を返すためにブロッキングソート操作を実行する必要があります。 allowDiskUse()を指定すると、 100 MB を超えるシステム メモリが必要な場合でも、MongoDB はソート操作を処理できます。 allowDiskUse()が省略され、操作に100 MB を超えるシステム メモリが必要な場合、MongoDB はエラーを返します。