클래스: Mongo::Collection::View::ChangeStream
- 다음을 포함합니다.
- 재시도 가능
- 다음에 정의됨:
- build/ruby-driver-v2.19/lib/mongo/collection/view/change_stream.rb,
build/ruby-driver-v2.19/lib/mongo/collection/view/change_stream/retryable.rb
개요
서버 버전 3.6 이상에서만 사용할 수 있습니다.
ChangeStreams는 여기에 설명된 문제로 인해 JRuby에서 제대로 작동하지 않습니다: github.com/jruby/jruby/issues/4212. 즉, JRuby는 배경 녹색 스레드의 열거자에서 #next를 열심히 평가하므로 변경 스트림 에서 #next를 호출하면 배경 의 루프에서 getMores가 호출됩니다.
집계 프레임워크 의 '$changeStream' 파이프라인 단계와 관련된 동작을 제공합니다. 이 단계를 지정하면 사용자가 특정 컬렉션 또는 데이터베이스 의 모든 변경 사항에 대해 알림 을 보내도록 요청 수 있습니다.
네임스페이스 아래에 정의됨
모듈: 재시도 가능
상수 요약 접기
- FULL_DOCUMENT_DEFAULT =
fullDocument 옵션 기본값 을 반환합니다.
'default'.동결
- DATABASE =
반환값 변경 스트림 이 컬렉션 뿐만 아니라 전체 데이터베이스 에서 변경 사항을 수신해야 함을 나타내는 데 사용됩니다.
:database
- CLUSTER =
반환값 변경 스트림 이 컬렉션 뿐만 아니라 전체 클러스터 에서 변경 사항을 수신 대기해야 함을 나타내는 데 사용됩니다.
:cluster
애그리게이션에서 상속된 상수
Loggable에서 포함된 상수
Explainable에 포함된 상수
Explainable::ALL_PLANS_EXECUTION, Explainable ::EXECUTION_STATS, Explainable::QUERY_PLANNER
인스턴스 속성 요약 접기
-
#options ⇒ BSON::Document
읽기 전용
변경 스트림 옵션.
애그리게이션에서 상속된 속성
Iterable에 포함된 속성
인스턴스 메서드 요약 접기
-
#close ⇒ nil
변경 스트림을 닫습니다.
-
#닫았나요? ⇒ 참, 거짓
변경 스트림이 닫혔나요?
-
#각 {|Each| ... } ⇒ 열거자
변경 스트림에서 반환된 문서를 반복합니다.
-
#initialize(view, 파이프라인, changes_for, options = {}) ⇒ ChangeStream
생성자
제공된 collection 보기, 파이프라인 및 옵션에 대한 변경 스트림을 초기화합니다.
-
#검사 ⇒ string
검사에 사용할 형식이 지정된 string 을 가져옵니다.
-
#resume_token ⇒ BSON::Document | nil
스트림 이 자동으로 재개하는 데 사용할 재개 토큰이 있는 경우 이를 반환합니다.
- #to_enum ⇒ 객체
-
#try_next ⇒ BSON::Document | nil
변경 스트림 에서 문서 하나를 반환합니다(사용 가능한 경우).
애그리게이션에서 상속된 메서드
#allow_disk_use, #explain, #write?
Retryable에 포함된 메서드
#read_Worker, #select_server, #write_Worker
Loggable에 포함된 메서드
#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger
Explainable에 포함된 메서드
Iterable에 포함된 메서드
생성자 세부 정보
#initialize(view, 파이프라인, changes_for, options = {}) ⇒ ChangeStream
제공된 collection 보기, 파이프라인 및 옵션에 대한 변경 스트림을 초기화합니다.
127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/ 컬렉션/view/change_stream.rb', 줄 127 def 초기화(보기, 파이프라인, change_for, = {}) @view = 보기 @changes_for = change_for @change_stream_filters = 파이프라인 && 파이프라인.dup @options = && .dup.동결 @start_after = @options[:start_after] # 변경 스트림에서 추적하는 재개 토큰으로, 만 사용됩니다. # 커서가 없거나 커서가 없는 경우 토큰 재개 @resume_token = @start_after || @options[:resume_after] create_cursor! # 변경 스트림을 재개할 때 다른 매개변수를 전송합니다. # 첫 번째 쿼리를 보낼 때와 비교 @resuming = true end |
인스턴스 속성 세부 정보
#options ⇒ BSON::Document (읽기 전용)
변경 스트림 옵션을 반환합니다.
61 62 63 |
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/ 컬렉션/view/change_stream.rb', 줄 61 def @options end |
인스턴스 메서드 세부 정보
#close ⇒ nil
이 메서드는 변경 스트림에서 사용하는 커서를 닫으려고 시도하며, 결과적으로 서버 측 변경 스트림 커서가 닫힙니다. 이 메서드는 서버 측 커서를 닫을 때 발생하는 모든 오류를 무시합니다.
변경 스트림을 닫습니다.
237 238 239 240 241 242 243 244 245 246 |
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/ 컬렉션/view/change_stream.rb', 줄 237 def 닫기 하지 않는 한 닫힘? 시작 @cursor.닫기 구출 오류::OperationFailure, 오류::SocketError, 오류::SocketTimeoutError, 오류::MissingConnection # 무시 end @cursor = nil end end |
#닫았나요? ⇒ true, false
변경 스트림이 닫혔나요?
256 257 258 |
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/ 컬렉션/view/change_stream.rb', 줄 256 def 닫힘? @cursor.nil? end |
#각 {|Each| ... } ⇒ 열거자
변경 스트림에서 반환된 문서를 반복합니다.
이 메서드는 재개 가능한 오류에 대해 오류당 한 번씩 재시도합니다(오류가 두 번 연속으로 발생하면 두 번째 오류가 발생하고, 에서 복구된 오류는 오류 횟수를 0으로 재설정).
161 162 163 164 165 166 167 168 169 |
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/ 컬렉션/view/change_stream.rb', 줄 161 def 각 올리다 StopIteration.신규 만약 닫힘? 루프 do 문서 = try_next yield 문서 만약 문서 end 구출 StopIteration 반환 self end |
#검사 ⇒ string
검사에 사용할 형식이 지정된 string 을 가져옵니다.
268 269 270 271 |
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/ 컬렉션/view/change_stream.rb', 줄 268 def 검사 "#<Mongo::Collection::View:ChangeStream:0x#{object_id} 필터=#{@change_stream_filters} " + "options=#{@options} resume_token=#{resume_token}>" end |
#resume_token ⇒ BSON::Document | nil
스트림 이 자동으로 재개하는 데 사용할 재개 토큰이 있는 경우 이를 반환합니다.
282 283 284 285 |
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/ 컬렉션/view/change_stream.rb', 줄 282 def resume_token cursor_resume_token = @cursor.resume_token 만약 @cursor cursor_resume_token || @resume_token end |
#to_enum ⇒ 객체
213 214 215 216 217 218 219 220 221 222 |
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/ 컬렉션/view/change_stream.rb', 줄 213 def to_enum 열거형 = super 열거형.send(:instance_variable_set, '@obj', self) 클래스 << 열거형 def try_next @obj.try_next end end 열거형 end |
#try_next ⇒ BSON::Document | nil
변경 스트림 에서 문서 하나를 반환합니다(사용 가능한 경우).
재개 가능한 오류가 발생하면 한 번 재시도합니다.
변경 스트림이 닫히면 StopIteration을 발생시킵니다.
이 메서드는 서버 의 변경 사항을 최대 max_await_time_ms 밀리초 동안 기다리며, 변경 사항이 수신되지 않으면 nil을 반환합니다.
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 |
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/ 컬렉션/view/change_stream.rb', 줄 183 def try_next 올리다 StopIteration.신규 만약 닫힘? 시작 doc = @cursor.try_next 구출 mongo::오류 => e 만약 !e.change_stream_resumable? 올리다 end # 초기 집계 을 다시 실행합니다. # 여기에 오류가 발생하면 반복이 중지되고 이 문제가 해결됩니다. # 메서드. # 커서의 재개 토큰을 저장하여 사용할 수 있습니다. # 새 커서 를 생성합니다. @resume_token = @cursor.resume_token 닫기 create_cursor! 재시도 end # 각 문서에 _id 가 있는지 확인해야 하므로 # 작업할 재개 토큰이 있습니다. 만약 doc && doc['_id'].nil? 올리다 오류::MissingResumeToken end doc end |