クラス: Mongo::Cursor Private
- 継承:
-
オブジェクト
- オブジェクト
- Mongo::Cursor
- 次による拡張機能。
- 転送可能
- 次のことが含まれます。
- 列挙可能、再試行可能
- 定義:
- lib/mongo/cursor.rb,
lib/mongo/cursor/kill_spec.rb,
lib/mongo/cursor/nontailable.rb
Overview
このクラスは、プライベート API の一部です。 このクラスは将来削除または変更される可能性があるため、可能な限り使用しないでください。
サーバー上のクエリ結果セットに対するイテレータのクライアント側表現。
Cursor
オブジェクトはアプリケーション コードに直接公開されません。 あるいは、 Collection::View
はEnumerable
インターフェースをアプリケーションに公開し、列挙型はCursor
インスタンスによってサポートされます。
既知のサブクラスを直接確認
名前空間で定義済み
Modules: NULLではない クラス: KillSpec
インスタンス属性の概要を折りたたむ
- # 接続 = オブジェクト readOnly private
-
# context → Operation::Context
readOnly
private
このカーソルのコンテキストをコンテキスト化します。
- # initial_result =オブジェクト readOnly private
-
#resume_token ⇒ BSON::Document | nil
readOnly
private
変更ストリームを再開するためにカーソルによって追跡される再開トークン。
- #サーバー~ オブジェクト readOnly private
-
#view ⇒ Collection::View
readOnly
private
コレクション ビューを表示します。
クラスメソッドの概要を折りたたむ
-
。 finalize (kill_spec, cluster)=Proc
private
ガベージ コレクションのカーソルを終了します。
インスタンス メソッドの概要を折りたたむ
-
# batch_size =整数
private
バッチ サイズを取得します。
-
#close(opts = {}) = nil
private
このカーソルを閉じて、クライアントとサーバー上の関連するリソースを解放します。
-
#閉じました= true、false
private
カーソルは閉じているかどうか。
-
# collection_name = string
private
解析されたコレクション名を取得します。
-
#各列挙型
private
クエリから返されたドキュメントを反復処理します。
- 完全に反復されている場合= ブール値 private
-
# get_ more =<BSON::Document> 配列[BSON::Document]
private
getMore コマンド を実行し、サーバーから取得したドキュメントのバッチを返します。
-
#id ⇒ Integer
private
カーソル ID を取得します。
-
#初期化(表示、結果、サーバー、オプション = {}) = カーソル
コンストラクター
private
Cursor
オブジェクトを作成します。 -
詳しくは、 を 検査し ますstring
private
Cursor
の人間が判読可能なstring表現を取得します。 - # kill_spec ( connection_ global_id) = オブジェクト private
-
#to_return ⇒ Integer
private
返されるドキュメントの数を取得します。
-
#try_next ⇒ BSON::Document | nil
private
クエリから 1 つのドキュメントが利用可能な場合は返します。
再試行可能な に含まれるメソッド
#read_worker 、 #select_server 、 #write_worker
コンストラクターの詳細
#初期化(表示、結果、サーバー、オプション = {}) =カーソル
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
Cursor
オブジェクトを作成します。
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# ファイル 'lib/mongo/cursor.rb', 行 74 デフォルト 初期化(表示, 結果, サーバー, = {}) ただし、 結果.is_a?(操作::結果) 発生 ArgumentError, " 2 番目の引数は Mongo::Operation::Result: #{結果. analyze }である必要があります" end @view = 表示 @server = サーバー @initial_result = 結果 @namespace = 結果.namespace @remaining = limit 場合 限定的な? set_cursor_id(結果) 場合 @cursor_id.nil? 発生 ArgumentError, 'カーソル ID が結果に存在する必要があります。 end @options = @session = @options[:session] @ connection_ global_id = 結果.connection_ global_id @context = @options[:context]&.と共に(connection_ global_id: connection_ global_id_for_context) || refresh_context @explain_closed = false @lock = ミューテックス.新着情報 場合 サーバー.load_ balancer? # 負荷分散されたトポロジーのみでカーソル内の接続が必要です。 #それ以外の場合は、それへの追加の参照は必要ありません。 @ connection = @initial_result.接続 end 場合 閉じましたか checkpoint_in_ connection else Register ObjectSpace.refine_ finalizer( 自己, 自己.クラス.finalize(kill_spec(@ connection_ global_id), クラスター) ) end end |
インスタンス属性の詳細
# 接続 = オブジェクト(読み取り専用)
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
117 118 119 |
# ファイル 'lib/mongo/cursor.rb', 行 117 デフォルト 接続 @ connection end |
# context → Operation::Context (読み取り専用)
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
このカーソルのコンテキストを返します。
53 54 55 |
# ファイル 'lib/mongo/cursor.rb', 行 53 デフォルト context @context end |
# initial_result =オブジェクト(読み取り専用)
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
114 115 116 |
# ファイル 'lib/mongo/cursor.rb', 行 114 デフォルト initial_result @initial_result end |
# resume_token = BSON::Document | nil (読み取り専用)
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
変更ストリームを再開するためのカーソルによって追跡される再開トークン
50 51 52 |
# ファイル 'lib/mongo/cursor.rb', 行 50 デフォルト resume_token @resume_token end |
#サーバー=オブジェクト(読み取り専用)
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
111 112 113 |
# ファイル 'lib/mongo/cursor.rb', 行 111 デフォルト サーバー @server end |
# view = Collection::View (readonly)
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
コレクション ビューのビューを返します。
44 45 46 |
# ファイル 'lib/mongo/cursor.rb', 行 44 デフォルト 表示 @view end |
クラスメソッドの詳細
。 finalize (kill_spec, cluster)= Proc
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
ガベージ コレクションのカーソルを終了します。 このカーソルをクラスターの CursorReaper によって実行される killCursors 操作に含めるようにスケジュールします。
128 129 130 131 132 133 134 135 |
# ファイル 'lib/mongo/cursor.rb', 行 128 デフォルト 自己.finalize(kill_spec, クラスター) ただし、 KillSpec === kill_spec 発生 ArgumentError, "最初の引数は killSpec である必要があります。 #{ kill_spec . analyze } " end proc 行う クラスター.schedule_kill_cursor(kill_spec) end end |
インスタンス メソッドの詳細
# batch_size =整数
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
バッチ サイズを取得します。
279 280 281 282 283 284 285 286 |
# ファイル 'lib/mongo/cursor.rb', 行 279 デフォルト batch_size 価値 = @view.batch_size & & @view.batch_size > 0 ? @view.batch_size : limit 場合 価値 == 0 nil else 価値 end end |
#close(opts = {}) = nil
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
このカーソルを閉じて、クライアントとサーバー上の関連するリソースを解放します。
305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 |
# ファイル 'lib/mongo/cursor.rb', 行 305 デフォルト 閉じる(ops = {}) return 場合 閉じましたか ctx = context ? context.refresh(timeout_ms: ops[:timeout_ms]) : refresh_context(ops) unregister read_with_one_retry 行う スペック = { coll_name: collection_name, db_name: database.name, cursor_ids: [id], } op = 操作::killCursors.新着情報(スペック) execution_operation(op, context: ctx) end nil ヘルプ エラー::OperationFailure::ファミリー, エラー::SocketError, エラー::SocketTimeoutError, エラー::ServerNotUsable # エラーは、エラーを処理することで実行できるため、無視されます。 保証する end_session @cursor_id = 0 @lock.同期 行う @explain_closed = true end checkpoint_in_ connection end |
#閉じました= true 、 false
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
カーソルは閉じているかどうか
296 297 298 299 |
# ファイル 'lib/mongo/cursor.rb', 行 296 デフォルト 閉じましたか # @cursor_idは原則として nil になることはありません。 @cursor_id.nil? || @cursor_id == 0 end |
# collection_name = string
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
解析されたコレクション名を取得します。
341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 |
# ファイル 'lib/mongo/cursor.rb', 行 341 デフォルト collection_name # ほとんどの場合、これはコレクションの名前と同じになります ドライバー内の # オブジェクト。 ただし、場合によっては(接続時 Atlas Data Lake は、 find コマンドによって返された名前空間です。 は異なる場合があるため、コレクション名は以下に基づいて使用します コマンドの結果の名前空間に対する # 場合 @namespace # 名前空間は "database.collection" という形式になることが多いです。 ただし、コレクション名にピリオドが含まれる場合もあります。 は、このメソッドが最初の の後のすべての名前空間コンポーネントを結合する理由です。 ns_components = @namespace.分裂('.') ns_components[1...ns_components.Length].join('.') else コレクション.name end end |
#各列挙型
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
クエリから返されたドキュメントを反復処理します。
カーソルを最大 1 回反復できます。 不完全な反復も許可されます。 カーソルを複数回反復処理しようとすると、 InvalidCursorOperation が発生します。
163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 |
# ファイル 'lib/mongo/cursor.rb', 行 163 デフォルト 各 # すでに最初のバッチするの過去の反復処理を実行した場合(つまり、 get_ more と呼ばれた場合) 少なくとも 1 回)、サーバー側のカーソルが過去に進んでいる # で最初のバッチを作成し、反復を最初から再開する 最初の結果を返すと 2 番目のバッチではドキュメントが欠落する 以降の バッチ では、カーソルが にある までのバッチが実行されます。 これを検出 条件を指定し、反復を中止します。 # # 将来のドライバー バージョンでは、各 は から継続されます # 前の反復の終了 または は常に から再開します # の先頭。 場合 @get_ more_呼び出された 発生 エラー::InvalidCursorOperation, ' getMore を発行したカーソルの反復を再開できません' end # 2.10より前との互換性を維持するには ドライバーのバージョン、リセット 新しい反復が開始されるたびに、ドキュメント配列を します。 @documents = nil 場合 ブロック_指定 このループは、try_next によって発生した #Storage により終了します。 ループ 行う ドキュメント = try_next 場合 「明示的に_閉じた」を参照してください 発生 エラー::InvalidCursorOperation, 'カーソルは明示的に閉じられた' end ノードの数 ドキュメント 場合 ドキュメント end 自己 else ドキュメント = [] このループは、try_next によって発生した #Storage により終了します。 ループ 行う ドキュメント = try_next 場合 「明示的に_閉じた」を参照してください 発生 エラー::InvalidCursorOperation, 'カーソルは明示的に閉じられた' end ドキュメント < ドキュメント 場合 ドキュメント end ドキュメント end end |
完全に反復されている場合=ブール値
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
416 417 418 |
# ファイル 'lib/mongo/cursor.rb', 行 416 デフォルト full_itated? !!@completed end |
# get_ more = 配列[BSON::Document ]<BSON::Document>
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
getMore コマンド を実行し、サーバーから取得したドキュメントのバッチを返します。
391 392 393 394 395 396 397 398 399 400 |
# ファイル 'lib/mongo/cursor.rb', 行 391 デフォルト get_ more @get_ more_呼び出された = true 最近の再試行可能な読み取りの仕様では、 getMores の再試行は禁止されています。 # getMores の再試行に使用されるレガシー再試行可能な読み取りロジック を実行するとサイレントデータが失われる可能性があり、ドライバーは再試行しなくなります 任意の状況で getMore 操作を実行します。 https://github.com/mongodb/specions/lob/ Master/source/retryable-reads/retryable-reads.md#qa プロセス(execution_operation(get_ more_operation)) end |
#id ⇒ Integer
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
カーソル ID が0の場合、サーバー上でカーソルが閉じられたことを意味します。
カーソル ID を取得します。
368 369 370 |
# ファイル 'lib/mongo/cursor.rb', 行 368 デフォルト id @cursor_id end |
詳しくは、 を 検査しstring ます
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
Cursor
の人間が判読可能なstring表現を取得します。
145 146 147 |
# ファイル 'lib/mongo/cursor.rb', 行 145 デフォルト 検査する " #< Mongo::Cursor: 0 x #{ object_id } @view= #{ @view . explain } > " end |
# kill_spec ( connection_ global_id) =オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
403 404 405 406 407 408 409 410 411 412 413 |
# ファイル 'lib/mongo/cursor.rb', 行 403 デフォルト kill_spec(connection_ global_id) KillSpec.新着情報( cursor_id: id, coll_name: collection_name, db_name: database.name, connection_ global_id: connection_ global_id, server_address: サーバー.address, セッション: @session, 接続: @ connection ) end |
#to_return ⇒ Integer
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
返されるドキュメントの数を取得します。 3.0以前のサーバー バージョンで使用されます。
381 382 383 |
# ファイル 'lib/mongo/cursor.rb', 行 381 デフォルト to_return use_limit? ? @remaining : (batch_size || 0) end |
#try_next ⇒ BSON::Document | nil
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
この方法は実験的なものであり、変更される可能性があります。
クエリから 1 つのドキュメントが利用可能な場合は返します。
このメソッドは最大_await_time_ms ミリ秒までサーバーからの変更を待機し、変更が受信されない場合は nil を返します。 サーバーから返すドキュメントがなくなる場合、またはカーソルを使い果たした場合は、 stopIteration 例外が発生します。
223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 |
# ファイル 'lib/mongo/cursor.rb', 行 223 デフォルト try_next 場合 @documents.nil? 公開バージョンの Mongoid には古いドライバーカーソルのコピーがあるため # コードでは、Mongoid クエリの場合、プロセス内の dup 呼び出しは呼び出されません # キャッシュはアクティブです。 ここで dup も呼び出すことで、その回避策はあります。 は、Mongoid のコードから取得される可能性のある プロセスの結果です。 @documents = プロセス(@initial_result).dup # ここでのドキュメントは空の配列にすることができ、したがって #最初のtry_next呼び出しで getMore の発行が終了する可能性があります end 場合 @documents.空の場合 # 空のバッチでは、バッチ再開トークンをキャッシュします cache_batch_resume_token ただし、 閉じましたか 場合 使い果たされたかどうか 閉じる @completed = true 発生 反復の停止 end @documents = get_ more else @completed = true 発生 反復の停止 end else # カーソルはここで閉じている # ドキュメントを空の配列として保持 end # 少なくとも 1 つのドキュメントがある場合は、その _id をキャッシュします 場合 @documents[0] cache_resume_token(@documents[0]) end # 反復処理している場合は、バッチ再開トークンをキャッシュする 最後のドキュメントに対して、またはバッチが空の場合は 場合 @documents.サイズ <= 1 cache_batch_resume_token 場合 閉じましたか @completed = true end end return @documents.シフト end |