クラス: Mongo::Cursor Private
- 継承:
-
オブジェクト
- オブジェクト
- Mongo::Cursor
- 次による拡張機能。
- 転送可能
- 次のことが含まれます。
- 列挙可能、再試行可能
- 定義:
- build/ruby-Driver-v 2.19 /lib/mongo/cursor.rb 、
build/ruby-Driver-v 2.19 /lib/mongo/cursor/kill_spec.rb
Overview
このクラスは、プライベート API の一部です。 このクラスは将来削除または変更される可能性があるため、可能な限り使用しないでください。
サーバー上のクエリ結果セットに対するイテレータのクライアント側表現。
Cursor
オブジェクトはアプリケーション コードに直接公開されません。 あるいは、 Collection::View
はEnumerable
インターフェースをアプリケーションに公開し、列挙型はCursor
インスタンスによってサポートされます。
既知のサブクラスを直接確認
名前空間で定義済み
クラス: KillSpec
インスタンス属性の概要を折りたたむ
- # 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
バッチ サイズを取得します。
-
閉じる= 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
オブジェクトを作成します。
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/cursor.rb', 行69 デフォルト 初期化(表示, 結果, サーバー, = {}) ただし、 結果.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 @ connection_ global_id = 結果.connection_ global_id @options = @session = @options[:session] @explain_closed = false @lock = ミューテックス.新着情報 ただし、 閉じましたか Register ObjectSpace.refine_ finalizer(自己, 自己.クラス.finalize(kill_spec(@ connection_ global_id), クラスター)) end end |
インスタンス属性の詳細
# initial_result =オブジェクト(読み取り専用)
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
99 100 101 |
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/cursor.rb', 行99 デフォルト initial_result @initial_result end |
# resume_token = BSON::Document | nil (読み取り専用)
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
変更ストリームを再開するためのカーソルによって追跡される再開トークン
50 51 52 |
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/cursor.rb', 行50 デフォルト resume_token @resume_token end |
#サーバー=オブジェクト(読み取り専用)
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
96 97 98 |
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/cursor.rb', 行96 デフォルト サーバー @server end |
# view = Collection::View (readonly)
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
コレクション ビューのビューを返します。
44 45 46 |
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/cursor.rb', 行44 デフォルト 表示 @view end |
クラスメソッドの詳細
。 finalize (kill_spec, cluster)= Proc
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
ガベージ コレクションのカーソルを終了します。 このカーソルをクラスターの CursorReaper によって実行される killCursors 操作に含めるようにスケジュールします。
110 111 112 113 114 115 116 117 |
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/cursor.rb', 行110 デフォルト 自己.finalize(kill_spec, クラスター) ただし、 KillSpec === kill_spec 発生 ArgumentError, "最初の引数は killSpec である必要があります。 #{ kill_spec . analyze } " end proc 行う クラスター.schedule_kill_cursor(kill_spec) end end |
インスタンス メソッドの詳細
# batch_size =整数
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
バッチ サイズを取得します。
261 262 263 264 265 266 267 268 |
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/cursor.rb', 行261 デフォルト batch_size 価値 = @view.batch_size & & @view.batch_size > 0 ? @view.batch_size : limit 場合 価値 == 0 nil else 価値 end end |
閉じる= nil
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
このカーソルを閉じて、クライアントとサーバー上の関連するリソースを解放します。
287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 |
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/cursor.rb', 行287 デフォルト 閉じる return 場合 閉じましたか unregister read_with_one_retry 行う スペック = { coll_name: collection_name, db_name: database.name, cursor_ids: [id], } op = 操作::killCursors.新着情報(スペック) execution_operation(op) end nil ヘルプ エラー::OperationFailure, エラー::SocketError, エラー::SocketTimeoutError, エラー::ServerNotUsable # エラーは、エラーを処理することで実行できるため、無視されます。 保証する end_session @cursor_id = 0 @lock.同期 行う @explain_closed = true end end |
#閉じました= true 、 false
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
カーソルは閉じているかどうか
278 279 280 281 |
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/cursor.rb', 行278 デフォルト 閉じましたか # @cursor_idは原則として nil になることはありません。 @cursor_id.nil? || @cursor_id == 0 end |
# collection_name = string
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
解析されたコレクション名を取得します。
320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 |
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/cursor.rb', 行320 デフォルト 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 が発生します。
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 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 |
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/cursor.rb', 行145 デフォルト 各 # すでに最初のバッチするの過去の反復処理を実行した場合(つまり、 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 の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
394 395 396 |
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/cursor.rb', 行394 デフォルト full_itated? !!@completed end |
# get_ more = 配列[BSON::Document ]<BSON::Document>
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
getMore コマンド を実行し、サーバーから取得したドキュメントのバッチを返します。
370 371 372 373 374 375 376 377 378 379 |
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/cursor.rb', 行370 デフォルト get_ more @get_ more_呼び出された = true 最近の再試行可能な読み取りの仕様では、 getMores の再試行は禁止されています。 # getMores の再試行に使用されるレガシー再試行可能な読み取りロジック を実行するとサイレントデータが失われる可能性があり、ドライバーは再試行しなくなります 任意の状況で getMore 操作を実行します。 https://github.com/mongodb/specions/lob/ Master/source/retryable-reads/retryable-reads.rst#qa プロセス(execution_operation(get_ more_operation)) end |
#id ⇒ Integer
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
カーソル ID が0の場合、サーバー上でカーソルが閉じられたことを意味します。
カーソル ID を取得します。
347 348 349 |
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/cursor.rb', 行347 デフォルト id @cursor_id end |
詳しくは、 を 検査しstring ます
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
Cursor
の人間が判読可能なstring表現を取得します。
127 128 129 |
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/cursor.rb', 行127 デフォルト 検査する " #< Mongo::Cursor: 0 x #{ object_id } @view= #{ @view . explain } > " end |
# kill_spec ( connection_ global_id) =オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
382 383 384 385 386 387 388 389 390 391 |
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/cursor.rb', 行382 デフォルト 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, ) end |
#to_return ⇒ Integer
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
返されるドキュメントの数を取得します。 3.0以前のサーバー バージョンで使用されます。
360 361 362 |
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/cursor.rb', 行360 デフォルト to_return use_limit? ? @remaining : (batch_size || 0) end |
#try_next ⇒ BSON::Document | nil
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
この方法は実験的なものであり、変更される可能性があります。
クエリから 1 つのドキュメントが利用可能な場合は返します。
このメソッドは最大_await_time_ms ミリ秒までサーバーからの変更を待機し、変更が受信されない場合は nil を返します。 サーバーから返すドキュメントがなくなる場合、またはカーソルを使い果たした場合は、 stopIteration 例外が発生します。
205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 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 |
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/cursor.rb', 行205 デフォルト 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 |