クラス: Mongo::Collection::View::changeStream

継承:
集計
  • オブジェクト
すべて表示
次のことが含まれます。
再試行可能
定義:
build/ruby-Driver-v 2.19 /lib/mongo/collection/view/change_stream.rb
build/ruby-Driver-v 2.19 /lib/mongo/collection/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

集計から継承された定数

集計::REROUTE

Loggableに含まれる定数

ログ可能::PRFIX

Explainableに含まれる定数

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

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

集計から継承される属性

#view

イテラブルに含まれる属性

#cursor

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

集計から継承されたメソッド

#allow_disk_use#explain#write?

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

#read_worker#select_server#write_worker

Loggableに含まれるメソッド

#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger

Explainableに含まれるメソッド

#explain

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

#close_query

コンストラクターの詳細

#初期化(ビュー、パイプライン、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



127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/collection/view/change_stream.rb', 行127

デフォルト 初期化(表示, パイプライン, Changes_for, options = {})
  @view = 表示
  @changes_for = Changes_for
  @change_stream_filters = パイプライン & & パイプライン.dup
  @options = options & & options.dup.freeze
  @start_ after = @options[:start_ after]

  # 変更ストリームによって追跡される再開トークン。のみ使用
  : カーソルがない場合、またはカーソル再開トークンがない場合
  @resume_token = @start_ after || @options[:resume_ after]

  create_cursor!

  変更ストリームを再開すると、異なるパラメーターが送信されます
  最初のクエリを送信したときと比較して
  @resumeing = true
end

インスタンス属性の詳細

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

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

次の値を返します。

  • BSON::Document

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

以来

  • 2.5.0



61
62
63
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/collection/view/change_stream.rb', 行61

デフォルト options
  @options
end

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

閉じる= nil

注:

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

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

例:

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

stream.close

次の値を返します。

  • (nil)

    常に nil です。

以来

  • 2.5.0



237
238
239
240
241
242
243
244
245
246
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/collection/view/change_stream.rb', 行237

デフォルト 閉じる
  ただし、 閉じましたか
    begin
      @cursor.閉じる
    ヘルプ エラー::OperationFailure, エラー::SocketError, エラー::SocketTimeoutError, エラー::MissingConnection
      # ignore
    end
    @cursor = nil
  end
end

#閉じました= truefalse

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

例:

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

stream.closed?

次の値を返します。

  • truefalse

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

以来

  • 2.5.0



256
257
258
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/collection/view/change_stream.rb', 行256

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

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

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

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

例:

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

stream.each do |document|
  p document
end

生成パラメータ:

  • BSON::Document

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

次の値を返します。

  • 列挙型

    列挙型。

以来

  • 2.5.0



161
162
163
164
165
166
167
168
169
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/collection/view/change_stream.rb', 行161

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

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

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

例:

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

stream.inspect

次の値を返します。

  • ( string )

    変更ストリーム検査 。

以来

  • 2.5.0



268
269
270
271
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/collection/view/change_stream.rb', 行268

デフォルト 検査する
  " #< Mongo::Collection::View:changeStream: 0 x #{ object_id } filters= #{ @change_stream_filters } " +
    " options= #{ @options } resume_token= #{ resume_token } > "
end

#resume_tokenBSON::Document | nil

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

例:

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

stream.resume_token

次の値を返します。

  • (BSON::Document | nil)

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

以来

  • 2.10.0



282
283
284
285
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/collection/view/change_stream.rb', 行282

デフォルト resume_token
  cursor_resume_token = @cursor.resume_token 場合 @cursor
  cursor_resume_token || @resume_token
end

# to_enum =オブジェクト

以来

  • 2.5.0



213
214
215
216
217
218
219
220
221
222
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/collection/view/change_stream.rb', 行213

デフォルト 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



183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/collection/view/change_stream.rb', 行183

デフォルト try_next
  発生 反復の停止.新着情報 場合 閉じましたか
  begin
    doc = @cursor.try_next
  ヘルプ mongo::エラー => e
    場合 !e.change_stream_resumeable?
      発生
    end

    # 初期集計を再実行します。
    # ここでエラーが発生すると反復が停止し、中断されます。
    # メソッド。

    # カーソルの再開トークンを使用できるように保存する
    # が新しいカーソルを作成する
    @resume_token = @cursor.resume_token

    閉じる
    create_cursor!
    RETRY
  end

  # 各ドキュメントに _id があることを確認する必要があります。そのため、
  # 使用する再開トークンを 持っている
  場合 doc & & doc['_id'].nil?
    発生 エラー::MissingResumeToken
  end
  doc
end