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

cursor.allowDiskUse()

項目一覧

  • 定義
  • 動作
cursor.allowDiskUse()

重要

mongosh メソッド

これは mongoshメソッドです。 これは、 Node.jsまたはその他のプログラミング言語固有のドライバー メソッドのドキュメントではありません

ほとんどの場合、 mongoshメソッドはレガシーの mongo shell メソッドと同じように動作します。 ただし、一部のレガシー メソッドはmongoshでは利用できません。

レガシーmongo shell のドキュメントについては、対応する MongoDB Server リリースのドキュメントを参照してください。

MongoDB API ドライバーについては、各言語のMongoDB ドライバードキュメント を参照してください。

allowDiskUse()を使用すると、ブロッキングソート操作の処理中に MongoDB はディスク上の一時ファイルを使用して、 100メガバイトのシステムメモリ制限を超えるデータを保存できます。 MongoDB100 がブロッキングソート操作に メガバイトを超えるシステム メモリを必要とする場合、クエリが を 指定 ない限り 、MongoDBcursor.allowDiskUse() はエラーを返します。

allowDiskUse() の形式は次のとおりです。

db.collection.find(<match>).sort(<sort>).allowDiskUse()

ブロッキングソート操作の詳細については、「ソートとインデックスの使用」を参照してください。

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.timestampcursor.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 はエラーを返します。

戻る

cursor.addOption

項目一覧