Classe: Mongo::Collection::View::ChangeStream
- Herda:
-
Agregação
- Objeto
- Agregação
- Mongo::collection::View::ChangeStream
- Inclui:
- Repetitivo
- Definido em:
- 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
Visão geral
Disponível apenas nas versões de servidor 3.6 e superiores.
Os ChangeStreams não funcionam corretamente com o JRuby devido ao problema documentado aqui: github.com/jruby/jruby/issues/{14212. Ou seja, JRuby avalia cuidadosamente #next em um enumerador em um thread de background verde, portanto, chamar #next no change stream fará com que getMores seja chamado em um loop no background.
Fornece comportamento em torno de um estágio de pipeline '$changeStream' na estrutura de agregação . A especificação desse estágio permite que os usuários solicitem o envio de notificações para todas as alterações em uma coleção ou banco de dados de dados específico.
Definido sob namespace
Módulos: Repetitivo
Colapsode resumo constante
- FULL_DOCUMENT_DEFAULT =
Retorna o valor padrão da opção fullDocument.
'padrão'.congelar
- DATABASE =
Retorna Usado para indicar que o fluxo de alterações deve escutar alterações em todo o banco de dados de dados e não apenas na coleção.
:database
- CLUSTER =
Retorna Usado para indicar que o fluxo de alterações deve escutar alterações em todo o cluster em vez de apenas na coleção.
:cluster
Constantes herdadas da agregação
Constantes incluídas do Loggable
Constantes incluídas de Explainable
Explicável::ALL_PLANS_EXECUTION, Explicável:: EXECUTION_STATS , Explicável::QUERY_PLANNER
Recolhimento do Resumo do atributo de instância
-
#options ⇒ BSON::Document
Somente leitura
As opções de change stream.
Atributos herdados da agregação
Atributos incluídos no Iterable
Recolhimento do Resumo do método de instância
-
#close ➤ nil
Feche o fluxo de alterações.
-
#fechado? ➤ verdadeiro, falso
O change stream está fechado?
-
#cada {|Cada| ... } ➤ Enumerador
Iterar por meio de documentos retornados pelo fluxo de alterações.
-
#initialize(view, pipeline, change_for, options = {}) ➤ ChangeStream
construtor
Inicialize o change stream para a visualização de collection, pipeline e opções fornecidas.
-
#inspecionar ➤ string
Obtenha uma string formatada para uso na inspeção.
-
#resume_token ➤ BSON::Document | nada
Retorna o token de retomada que o stream usará para ser retomado automaticamente, se houver.
- #to_enum ➤ Objeto
-
#try_next ➤ BSON::Document | nada
Retorne um documento do fluxo de alterações, se houver um disponível.
Métodos herdados de Aggregation
#allow_disk_use, #explain, #write?
Métodos incluídos no Retryable
#read_worker, #select_server, #write_worker
Métodos incluídos no Loggable
#log_debug, #log_error, #log_fatal, #log_info, #log_WARN, #logger
Métodos incluídos no Explainable
Métodos incluídos do Iterable
Detalhes do construtor
#initialize(view, pipeline, change_for, options = {}) ➤ ChangeStream
Inicialize o change stream para a visualização de collection, pipeline e opções fornecidas.
127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'build/ruby-driver-v2.19/lib/mongo/collection/view/change_stream.rb', linha 127 def inicializar(vista, gasoduto, change_for, = {}) @view = vista @changes_for = change_for @change_stream_filters = gasoduto && gasoduto.dup @opções = && .dup.congelar @start_after = @opções[:start_after] # O token de retomada rastreado pelo fluxo de alterações, usado apenas # quando não houver cursor ou nenhum token de retomada do cursor @resume_token = @start_after || @opções[:resume_after] create_cursor! # Enviamos parâmetros diferentes quando retomamos um change stream # em comparação com quando enviamos a primeira query @resuming = true end |
Detalhes do atributo da instância
#opções ➤ BSON::Document (somente leitura)
Retorna as opções de change stream.
61 62 63 |
# File 'build/ruby-driver-v2.19/lib/mongo/collection/view/change_stream.rb', linha 61 def @opções end |
Detalhes do método de instância
#close ➤ nil
Este método tenta fechar o cursor usado pelo change stream, que, por sua vez, fecha o cursor do change stream no lado do servidor. Esse método ignora todos os erros que ocorrem ao fechar o cursor do lado do servidor.
Feche o fluxo de alterações.
237 238 239 240 241 242 243 244 245 246 |
# File 'build/ruby-driver-v2.19/lib/mongo/collection/view/change_stream.rb', linha 237 def Fechar a menos que fechado? começar @cursor.Fechar salvar Erro::Falha de operação, Erro::Erro de soquete, Erro::SocketTimeoutError, Erro::missingconnection #ignorar end @cursor = nada end end |
#fechado? ➤ true, false
O change stream está fechado?
256 257 258 |
# File 'build/ruby-driver-v2.19/lib/mongo/collection/view/change_stream.rb', linha 256 def fechado? @cursor.nada? end |
#cada {|Cada| ... } ➤ Enumerador
Iterar por meio de documentos retornados pelo fluxo de alterações.
Esse método tenta novamente uma vez por erro em erros retomáveis (dois erros consecutivos resultam no segundo erro sendo gerado, um erro que é recuperado de redefine a contagem de erros para zero).
161 162 163 164 165 166 167 168 169 |
# File 'build/ruby-driver-v2.19/lib/mongo/collection/view/change_stream.rb', linha 161 def cada aumentar StopIteration.Novo se fechado? loop fazer documento = try_next rendimento documento se documento end salvar StopIteration Método auto end |
#inspecionar ➤ string
Obtenha uma string formatada para uso na inspeção.
268 269 270 271 |
# File 'build/ruby-driver-v2.19/lib/mongo/collection/view/change_stream.rb', linha 268 def inspecionar "#<Mongo::Collection::View:ChangeStream:0x#{object_id} filter=#{@change_stream_filters} " + "options=#{@options} resume_token=#{resume_token}>" end |
#resume_token ➤ BSON::Document | nada
Retorna o token de retomada que o stream usará para ser retomado automaticamente, se houver.
282 283 284 285 |
# File 'build/ruby-driver-v2.19/lib/mongo/collection/view/change_stream.rb', linha 282 def resume_token cursor_resume_token = @cursor.resume_token se @cursor cursor_resume_token || @resume_token end |
#to_enum ➤ Objeto
213 214 215 216 217 218 219 220 221 222 |
# File 'build/ruby-driver-v2.19/lib/mongo/collection/view/change_stream.rb', linha 213 def to_enum enum = super enum.enviar(:instance_variable_set, '@obj', auto) classe << enum def try_next @obj.try_next end end enum end |
#try_next ➤ BSON::Document | nada
Retorne um documento do fluxo de alterações, se houver um disponível.
Tenta novamente uma vez em um erro retomável.
Gera StopIteration se o change stream estiver fechado.
Este método aguardará até max_await_time_ms milissegundos por alterações do servidor e, se nenhuma alteração for recebida, retornará nulo.
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 |
# File 'build/ruby-driver-v2.19/lib/mongo/collection/view/change_stream.rb', linha 183 def try_next aumentar StopIteration.Novo se fechado? começar doc = @cursor.try_next salvar mongo::Erro => e se !e.change_stream_resumable? aumentar end # Executar novamente a agregação inicial . # Qualquer erro aqui interromperá a iteração e sairá disso #método. # Salvar o token de retomada do cursor para que possamos usá-lo # para criar um novo cursor @resume_token = @cursor.resume_token Fechar create_cursor! tentar novamente end # Precisamos verificar se cada documento tem um _id, então podemos # tenha um token de currículo para trabalhar se doc && doc['_id'].nada? aumentar Erro::missingResumeToken end doc end |