クラス: Mongo::Collection::View::changeStream
- 定義:
- lib/mongo/コレクション/view/change_stream.rb
、lib/mongo/コレクション/view/change_stream/retryable.rb
Overview
サーバー バージョン3.6以降でのみ使用できます。
ChangeStreams は JRuby では正しく動作しません。 github.com/jruby/jruby/issues/{1 4212 。 つまり、JRuby はバックグラウンドの環境ごとのスレッドの列挙型にある を早期に評価するため、変更ストリームで #next を呼び出すと、getMores がバックグラウンドのループで呼び出されます。
集計フレームワークの '$changeStream' パイプライン ステージに関する動作を提供します。 このステージを指定すると、ユーザーは特定のコレクションまたはデータベースに対するすべての変更に対して通知を送信するようリクエストできます。
名前空間で定義済み
Modules: 再試行可能
定数の概要の削減
- FULL_DOCUMENT_DEFAULT =
fullDocument オプションのデフォルト値を返します。
'デフォルト'.freeze
- DATABASE =
変更ストリームがコレクションだけでなくデータベース全体の変更をリッスンする必要があることを示すために使用されます。
:database
- CLUSTER =
変更ストリームがコレクションだけでなくクラスター全体の変更をリッスンする必要があることを示すために使用されます。
:cluster
Loggableに含まれる定数
Explainableに含まれる定数
説明可能::ALL_PLANS_EXECUTION 、説明可能:EXECUTION_STATS 、説明可能::QUERY_PLANNER
インスタンス属性の概要を折りたたむ
-
#cursor ⇒ Cursor
readOnly
private
この操作の基礎となるカーソル 。
-
#options ⇒ BSON::Document
readOnly
変更ストリーム オプション。
集計:: 動作 に含まれる属性
インスタンス メソッドの概要を折りたたむ
-
#close(opts = {}) = nil
変更ストリームを閉じます。
-
#閉じました= true、false
変更ストリームは閉じましたか。
-
# cursor_type = オブジェクト
変更ストリームは、 tailable-awaitData カーソル... の抽象化です。
-
各{|Each| ... } = 列挙型
変更ストリームによって返されたドキュメントを反復処理します。
-
#初期化(ビュー、パイプライン、changes_for、オプション ={}) = ChangeStream
コンストラクター
指定されたコレクション ビュー、パイプライン、オプションの変更ストリームを初期化します。
-
詳しくは、 を 検査し ますstring
検査で使用するための書式設定された string を取得します。
-
#max_await_time_ms = 整数 | nil
この変更ストリームに渡された max_await_time_ms オプションの値を返します。
-
#resume_token ⇒ BSON::Document | nil
ストリームが自動再開するために使用する再開トークン(存在する場合)を返します。
-
# timeout_mode = オブジェクト
変更ストリーム ... 暗黙的にできごとのモードを使用します。
- # to_enum =オブジェクト
-
#try_next ⇒ BSON::Document | nil
変更ストリームから 1 つのドキュメントが使用可能な場合は、返します。
再試行可能な に含まれるメソッド
#read_worker 、 #select_server 、 #write_worker
集計:: 動作
#allow_disk_use 、#explain 、#timeout_ms 、#write?
Loggableに含まれるメソッド
#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger
Explainableに含まれるメソッド
イテラブルに含まれるメソッド
Mongo::CursorHost に含まれるメソッド
コンストラクターの詳細
#初期化(ビュー、パイプライン、changes_for、オプション ={}) = ChangeStream
指定されたコレクション ビュー、パイプライン、オプションの変更ストリームを初期化します。
133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
# ファイル 'lib/mongo/ コレクション/view/change_stream.rb' は、133 行 デフォルト 初期化(表示, パイプライン, Changes_for, = {}) #変更ストリームカーソルは : イテラブルのみであるため、次は許可されません: # timeout_mode を指定する performance_setup(表示, , forbid: %i[ timeout_mode ]) 行う @changes_for = Changes_for @change_stream_filters = パイプライン & & パイプライン.dup @start_ after = @options[:start_ after] end # 変更ストリームによって追跡される再開トークン。のみ使用 : カーソルがない場合、またはカーソル再開トークンがない場合 @resume_token = @start_ after || @options[:resume_ after] create_cursor! 変更ストリームを再開すると、異なるパラメーターが送信されます 最初のクエリを送信したときと比較して @resumeing = true end |
インスタンス属性の詳細
# cursor ~ カーソル(読み取り専用)
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
この操作の基になるカーソルを返します。
67 68 69 |
# ファイル 'lib/mongo/ コレクション/view/change_stream.rb' は、67 行 デフォルト cursor @cursor end |
#オプション= BSON::Document (読み取り専用)
変更ストリーム オプションを返します。
63 64 65 |
# ファイル 'lib/mongo/ コレクション/view/change_stream.rb' は、63 行 デフォルト @options end |
インスタンス メソッドの詳細
#close(opts = {}) = nil
このメソッドは、変更ストリームで使用されるカーソルを閉じようとします。これにより、サーバー側の変更ストリームのカーソルも閉じられます。 このメソッドは、サーバー側カーソルを閉じるときに発生するエラーを無視します。
変更ストリームを閉じます。
254 255 256 257 258 259 260 261 262 263 |
# ファイル 'lib/mongo/ コレクション/view/change_stream.rb' は、254 行 デフォルト 閉じる(ops = {}) ただし、 閉じましたか begin @cursor.閉じる(ops) ヘルプ エラー::OperationFailure::ファミリー, エラー::SocketError, エラー::SocketTimeoutError, エラー::MissingConnection # ignore end @cursor = nil end end |
#閉じました= true 、 false
変更ストリームは閉じましたか?
273 274 275 |
# ファイル 'lib/mongo/ コレクション/view/change_stream.rb' は、273 行 デフォルト 閉じましたか @cursor.nil? end |
# cursor_type = オブジェクト
変更ストリームは、 tailable-awaitData カーソルの抽象化です...」
307 308 309 |
# ファイル 'lib/mongo/ コレクション/view/change_stream.rb' は、307 行 デフォルト cursor_type :tailable_await end |
各{|Each| ... } =列挙型
変更ストリームによって返されたドキュメントを反復処理します。
このメソッドは、再開可能なエラーのエラーごとに 1 回再試行します(2 回連続でエラーが発生すると 2 番目のエラーが発生し、 から回復されたエラーはエラー数を 0 にリセットします)。
169 170 171 172 173 174 175 176 177 |
# ファイル 'lib/mongo/ コレクション/view/change_stream.rb' は、169 行 デフォルト 各 発生 反復の停止.新着情報 場合 閉じましたか ループ 行う ドキュメント = try_next ノードの数 ドキュメント 場合 ドキュメント end ヘルプ 反復の停止 return 自己 end |
詳しくは、 を 検査しstring ます
検査で使用するための書式設定された string を取得します。
285 286 287 288 |
# ファイル 'lib/mongo/ コレクション/view/change_stream.rb' は、285 行 デフォルト 検査する " #< Mongo::Collection::View:changeStream: 0 x #{ object_id } filters= #{ @change_stream_filters } " + " options= #{ @options } resume_token= #{ resume_token } > " end |
#max_await_time_ms = 整数 | nil
この変更ストリームに渡された max_await_time_ms オプションの値を返します。
322 323 324 |
# ファイル 'lib/mongo/ コレクション/view/change_stream.rb' は、322 行 デフォルト max_await_time_ms [:max_await_time_ms] end |
#resume_token ⇒ BSON::Document | nil
ストリームが自動再開するために使用する再開トークン(存在する場合)を返します。
299 300 301 302 |
# ファイル 'lib/mongo/ コレクション/view/change_stream.rb' は、299 行 デフォルト resume_token cursor_resume_token = @cursor.resume_token 場合 @cursor cursor_resume_token || @resume_token end |
# timeout_mode = オブジェクト
「変更ストリーム ... 暗黙的にできごとのモードを使用する 」
314 315 316 |
# ファイル 'lib/mongo/ コレクション/view/change_stream.rb' は、314 行 デフォルト timeout_mode :反復 end |
# to_enum =オブジェクト
227 228 229 230 231 232 233 234 235 236 |
# ファイル 'lib/mongo/ コレクション/view/change_stream.rb' は、227 行 デフォルト to_enum 列挙 = スーパー 列挙.送信(:instance_variable_set, '@obj', 自己) クラス < 列挙 デフォルト try_next @obj.try_next end end 列挙 end |
#try_next ⇒ BSON::Document | nil
変更ストリームから 1 つのドキュメントが使用可能な場合は、返します。
再開可能なエラーで 1 回再試行します。
変更ストリームが閉じられている場合は、 stopIteration が発生します。
このメソッドは最大_await_time_ms ミリ秒までサーバーからの変更を待機し、変更が受信されない場合は nil を返します。
191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 |
# ファイル 'lib/mongo/ コレクション/view/change_stream.rb' は、191 行 デフォルト try_next replica_cursor。 場合 @timed_out 発生 反復の停止.新着情報 場合 閉じましたか begin doc = @cursor.try_next ヘルプ mongo::エラー => e # "次の呼び出しがタイムアウト エラーで失敗した場合、ドライバーは してはなりません 。 変更ストリーム を無効化します 。 後続の次回の呼び出しは する必要があります で新しい変更ストリームを確立するために再開試行を実行する #サーバー..." # #ただし、SocketTimeoutErrors は TimeoutErrors ですが、次も行います: 変更ストリームの再開が可能 既存の(指定された)動作を維持するには、 # エラーが次でない場合にのみタイムアウトをカウントします 変更ストリームの再開が可能 @timed_out = e.is_a?(mongo::エラー::TimeoutError) & & !e.change_stream_resumeable? 発生 ただし、 @timed_out || e.change_stream_resumeable? @resume_token = @cursor.resume_token 発生 e 場合 @timed_out replica_cursor。(@cursor.context) RETRY end # 各ドキュメントに _id があることを確認する必要があります。そのため、 # 使用する再開トークンを 持っている 場合 doc & & doc['_id'].nil? 発生 エラー::MissingResumeToken end doc end |