Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Cursors

カーソルは、クエリの結果を指します。カーソルを使用すると、データベースの結果を一度に 1バッチするずつ反復処理できます。

find() メソッドと aggregate() メソッドは、結果のバッチするを持つカーソルを返します。カーソルを手動で反復処理するか、toArray() を使用してドキュメントにアクセスします。詳細については、mongosh でのカーソルの反復処理」を参照してください。

上限付きコレクションの場合は、追尾可能 (tailable) カーソルを使用して、挿入時にドキュメントを検索します。詳細については、追尾可能 (tailable) カーソル を参照してください。

MongoDB は、次の場合にクライアントセッション内で作成されたカーソルを閉じます。

  • クライアントはカーソルを使い果たします。

  • カーソルを手動で閉じます。

  • セッションを手動で終了する。

  • セッションがタイムアウトした。

cursorTimeoutMillis はアイドルカーソルのタイムアウトを設定します(デフォルト: 10 分)。MongoDB はこの時間が経過するとセッション外のアイドル カーソルを閉じます。バッチするを返すと、タイムアウトが延長されます。カーソルを手動で閉じるには、killCursors を使用します。

localLogicalSessionTimeoutMinutes はセッション タイムアウトを設定します(デフォルト: 30 分)。セッションを延長するには refreshSessions を使用し、セッションを終了するには killSessions を使用します。

ドライバーと mongosh は、明示的なセッション外で開かれたカーソルの暗黙的なセッションを作成します。

カーソルによってドキュメントが返されると、読み取り保証 (read concern)のレベルによっては、バックグラウンドで他の操作が実行され、結果に影響が出る可能性があります。 詳細については、「 読み取り分離、整合性、最新性について 」を参照してください。

MongoDB 7.2 以降、 mongos配置で存在しないデータベースを使用しようとする集計パイプライン クエリでは、検証エラーが返されます。

以前のバージョンでは、これらの集計クエリは空のカーソルを返していました。

find 操作と aggregate 操作は バッチ するに達するまで実行されます。クエリは一時停止します。この一時停止されたクエリは、カーソルIDによって識別されるカーソルです。

データベースは、バッチするとカーソルIDを返します。ドライバーと mongosh はこれをクライアント側のカーソルに保存します。さらにドキュメントが存在する場合、カーソルは getMore 経由で次のバッチするを検索します。残りのバッチする結果を確認するには cursor.objsLeftInBatch() を使用し、さらに結果を確認するには cursor.hasNext() を使用します。

カーソルは、16 MiB の最大BSONドキュメントサイズによって制限される結果をバッチで返します。ドキュメント制限を設定するには、cursor.batchSize() を使用します。find()aggregate() のデフォルトのバッチするサイズは 101 です。後続の getMore 操作にはデフォルトの制限はなく、16 MiB メッセージ サイズのみが適用されます。

インデックスなしでソート操作を行うクエリでは、結果を返す前にすべてのドキュメントをメモリにロードする必要があります。

db.serverStatus() は、metrics.cursorフィールドにカーソル メトリクスを返します。詳しくは、metrics.cursor を参照してください。

戻る

クエリシェイプ

項目一覧