クラス: 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' パイプライン ステージに関する動作を提供します。 このステージを指定すると、ユーザーは特定のコレクションまたはデータベースに対するすべての変更に対して通知を送信するようリクエストできます。

以来

  • 2.5.0

名前空間で定義済み

Modules: 再試行可能

定数の概要の削減

FULL_DOCUMENT_DEFAULT =

fullDocument オプションのデフォルト値を返します。

次の値を返します。

  • ( string )

    fullDocument オプションのデフォルト値。

以来

  • 2.5.0

'デフォルト'.freeze
DATABASE =

変更ストリームがコレクションだけでなくデータベース全体の変更をリッスンする必要があることを示すために使用されます。

次の値を返します。

  • シンボル

    変更ストリームがコレクションだけでなくデータベース全体の変更をリッスンする必要があることを示すために使用されます。

以来

  • 2.6.0

:database
CLUSTER =

変更ストリームがコレクションだけでなくクラスター全体の変更をリッスンする必要があることを示すために使用されます。

次の値を返します。

  • シンボル

    変更ストリームがコレクションだけでなくクラスター全体の変更をリッスンする必要があることを示すために使用されます。

以来

  • 2.6.0

:cluster

Loggableに含まれる定数

ログ可能::PRFIX

Explainableに含まれる定数

説明可能::ALL_PLANS_EXECUTION説明可能:EXECUTION_STATS説明可能::QUERY_PLANNER

インスタンス属性の概要を折りたたむ

集計:: 動作 に含まれる属性

#view

インスタンス メソッドの概要を折りたたむ

再試行可能な に含まれるメソッド

#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に含まれるメソッド

#explain

イテラブルに含まれるメソッド

#close_query

Mongo::CursorHost に含まれるメソッド

#validate_timeout_mode!

コンストラクターの詳細

#初期化(ビュー、パイプライン、changes_for、オプション ={}) = ChangeStream

指定されたコレクション ビュー、パイプライン、オプションの変更ストリームを初期化します。

例:

新しい変更ストリーム ビューを作成します。

ChangeStream.new(view, pipeline, options)

パラメーター:

  • 表示 コレクション::View

    コレクションビュー。

  • パイプライン <Hash>配列 )

    変更通知をフィルタリングする演算子のパイプライン。

  • options ハッシュ (デフォルトは{}です)

    変更ストリーム オプション。

オプション ハッシュ( options ):

  • : full_document string

    許可された値: nil、"default"、"updateLookup"、"whenAvalable"、"Required"

    デフォルトでは値は送信されません( nil)は、「デフォルト」と同等です。 デフォルトでは、部分的な更新の変更通知には、ドキュメントに対する変更を説明するデルタが含まれます。

    「updateLookup」に設定されている場合、部分的な更新の変更通知には、ドキュメントに対する変更を説明するデルタと、変更が発生した後一定時間後に変更されたドキュメント全体のコピーの両方が含まれます。

    「whenAvalable」に設定すると、このイベントの変更後のイメージが利用可能な場合、置換および更新される変更イベントのために変更されたドキュメントの変更後のイメージを返すように変更ストリームを構成します。

    「必須」に設定すると、「whenAvalable」と同じ動作をしますが、変更後のイメージが利用できない場合はエラーが発生します。

  • : full_document_Before_change string

    許可された値は: nil、"whenAvalable"、"Required"、"OFF" の場合、

    デフォルトでは値は送信されません( nil)は、「オフ」と同じです。

    「 whenAvalable 」に設定すると、 は、使用可能な場合、変更イベントの置換、アップデート、削除のために変更されたドキュメントの変更前のイメージを返すように変更ストリームを構成します。

    「必須」に設定すると、「whenAvalable」と同じ動作をしますが、変更前のイメージが利用できない場合はエラーが発生します。

  • :resume_ after BSON::Documentハッシュ

    新しい変更ストリームの論理的な開始点を指定します。

  • :max_await_time_ms 整数

    新しいドキュメントが変更ストリーム クエリを満たすまでにサーバーが待機する最大時間。

  • :batch_size 整数

    バッチするごとに返すドキュメントの数。

  • :collation BSON::Documentハッシュ

    使用する照合。

  • :start_at_operation_time BSON::Timestamp

    指定されたタイムスタンプの時点またはその後に発生した変更のみを返します。 サーバーに対して実行されたコマンドは、ここで使用できるクラスター時間を返します。 サーバー バージョン4.0 + によってのみ認識されます。

  • :start_ after Bson::Documentハッシュ

    :resume_ after と同様に、このオプションは再開トークンを受け取り、新しい変更ストリームを開始してトークンの後の最初の通知を返します。 これにより、ユーザーは、削除、再作成、または名前が新しく変更されたコレクションを、通知を失うことなく監視できるようになります。

  • :comment オブジェクト

    このコマンドに添付するユーザー指定のコメント。

  • :show_expanded_events ブール値

    サーバーが変更ストリーム イベントの「展開」リストを送信できるようにします。 このフラグセットに含まれる追加のイベントのリストは、createIndexes、dropIndexes、変更、作成、shardCollection、reshardCollection、 refineCollectionShardKey です。

    「startAfter」と「resumeAfter」の両方が指定されている場合、サーバーはエラーを報告します。

以来

  • 2.5.0



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, options = {})
  #変更ストリームカーソルは : イテラブルのみであるため、次は許可されません:
  # timeout_mode を指定する
  performance_setup(表示, options, 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 の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

この操作の基になるカーソルを返します。

次の値を返します。

  • (Cursor)

    この操作の基になるカーソル

以来

  • 2.5.0



67
68
69
# ファイル 'lib/mongo/ コレクション/view/change_stream.rb' は、67 行

デフォルト cursor
  @cursor
end

#オプション= BSON::Document (読み取り専用)

変更ストリーム オプションを返します。

次の値を返します。

  • BSON::Document

    変更ストリーム オプション。

以来

  • 2.5.0



63
64
65
# ファイル 'lib/mongo/ コレクション/view/change_stream.rb' は、63 行

デフォルト options
  @options
end

インスタンス メソッドの詳細

#close(opts = {}) = nil

注:

このメソッドは、変更ストリームで使用されるカーソルを閉じようとします。これにより、サーバー側の変更ストリームのカーソルも閉じられます。 このメソッドは、サーバー側カーソルを閉じるときに発生するエラーを無視します。

変更ストリームを閉じます。

例:

変更ストリームを閉じます。

stream.close

次の値を返します。

  • (nil)

    常に nil です。

以来

  • 2.5.0



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

#閉じました= truefalse

変更ストリームは閉じましたか?

例:

変更ストリームが閉じているかどうかを判断します。

stream.closed?

次の値を返します。

  • truefalse

    変更ストリームが閉じられた場合。

以来

  • 2.5.0



273
274
275
# ファイル 'lib/mongo/ コレクション/view/change_stream.rb' は、273 行

デフォルト 閉じましたか
  @cursor.nil?
end

# cursor_type = オブジェクト

変更ストリームは、 tailable-awaitData カーソルの抽象化です...」

次の値を返します。

  • :tailable_await

以来

  • 2.5.0



307
308
309
# ファイル 'lib/mongo/ コレクション/view/change_stream.rb' は、307 行

デフォルト cursor_type
  :tailable_await
end

{|Each| ... } =列挙型

変更ストリームによって返されたドキュメントを反復処理します。

このメソッドは、再開可能なエラーのエラーごとに 1 回再試行します(2 回連続でエラーが発生すると 2 番目のエラーが発生し、 から回復されたエラーはエラー数を 0 にリセットします)。

例:

ドキュメントのストリームを反復処理します。

stream.each do |document|
  p document
end

生成パラメータ:

  • BSON::Document

    変更ストリーム ドキュメント。

次の値を返します。

  • 列挙型

    列挙型。

以来

  • 2.5.0



169
170
171
172
173
174
175
176
177
# ファイル 'lib/mongo/ コレクション/view/change_stream.rb' は、169 行

デフォルト 
  発生 反復の停止.新着情報 場合 閉じましたか
  ループ 行う
    ドキュメント = try_next
    ノードの数 ドキュメント 場合 ドキュメント
  end
ヘルプ 反復の停止
  return 自己
end

詳しくは、 を 検査しstring ます

検査で使用するための書式設定された string を取得します。

例:

変更ストリーム オブジェクトを調べます。

stream.inspect

次の値を返します。

  • ( string )

    変更ストリーム検査 。

以来

  • 2.5.0



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 オプションの値を返します。

次の値を返します。

  • (Integer | nil)

    max_await_time_ms 値

以来

  • 2.5.0



322
323
324
# ファイル 'lib/mongo/ コレクション/view/change_stream.rb' は、322 行

デフォルト max_await_time_ms
  options[:max_await_time_ms]
end

#resume_tokenBSON::Document | nil

ストリームが自動再開するために使用する再開トークン(存在する場合)を返します。

例:

変更ストリーム 再開トークンを取得します。

stream.resume_token

次の値を返します。

  • (BSON::Document | nil)

    変更ストリーム 再開トークン。

以来

  • 2.10.0



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 = オブジェクト

「変更ストリーム ... 暗黙的にできごとのモードを使用する 」

次の値を返します。

  • :反復

以来

  • 2.5.0



314
315
316
# ファイル 'lib/mongo/ コレクション/view/change_stream.rb' は、314 行

デフォルト timeout_mode
  :反復
end

# to_enum =オブジェクト

以来

  • 2.5.0



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_nextBSON::Document | nil

変更ストリームから 1 つのドキュメントが使用可能な場合は、返します。

再開可能なエラーで 1 回再試行します。

変更ストリームが閉じられている場合は、 stopIteration が発生します。

このメソッドは最大_await_time_ms ミリ秒までサーバーからの変更を待機し、変更が受信されない場合は nil を返します。

次の値を返します。

  • (BSON::Document | nil)

    変更ストリーム ドキュメント。

次の値が発生します。

  • 反復の停止

以来

  • 2.6.0



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