Classe: Mongo::Operação::Result
- Herda:
-
Objeto
- Objeto
- Mongo::Operação::Resultado
- Estendido por:
- Encaminhável
- Inclui:
- Enumerável
- Definido em:
- lib/mongo/operação/result.rb,
lib/mongo/operação/shared/result/aggregatable.rb
Visão geral
Encapsulador de resultados para respostas do protocolo de fio.
Uma operação tem zero ou uma resposta. As únicas operações que produzem zero respostas são gravações não reconhecidas; todas as outras operações produzem uma resposta. Essa classe fornece um objeto que pode ser operador (por exemplo, para verificar se uma operação foi bem-sucedida) mesmo quando a operação não produz uma resposta (nesse caso, pressupõe-se que tenha sido bem-sucedida).
Subclasses conhecidas diretas
Excluir::BulkResult, Inserir::BulkResult, Atualizar::BulkResult
Definido sob namespace
Módulos: Agregado
Colapsode resumo constante
- CURSOR =
Essa constante faz parte de uma API privada. Você deve evitar usar essa constante, se possÃvel, pois ela pode ser removida ou alterada no futuro.
O nome do campo do documento do cursor em uma agregação.
'cursor'- CURSOR_ID =
Essa constante faz parte de uma API privada. Você deve evitar usar essa constante, se possÃvel, pois ela pode ser removida ou alterada no futuro.
O campo ID do cursor no documento do cursor.
'id'- FIRST_BATCH =
Essa constante faz parte de uma API privada. Você deve evitar usar essa constante, se possÃvel, pois ela pode ser removida ou alterada no futuro.
O nome do campo para o primeiro lote de um cursor.
'firstBatch'- NEXT_BATCH =
Essa constante faz parte de uma API privada. Você deve evitar usar essa constante, se possÃvel, pois ela pode ser removida ou alterada no futuro.
O nome do campo para o próximo lote de um cursor.
'próximoBatch'- NAMESPACE =
Essa constante faz parte de uma API privada. Você deve evitar usar essa constante, se possÃvel, pois ela pode ser removida ou alterada no futuro.
O campo namespace no documento do cursor.
'ns'- N =
Essa constante faz parte de uma API privada. Você deve evitar usar essa constante, se possÃvel, pois ela pode ser removida ou alterada no futuro.
O número de documentos atualizados na gravação.
'n'- OK =
Essa constante faz parte de uma API privada. Você deve evitar usar essa constante, se possÃvel, pois ela pode ser removida ou alterada no futuro.
O campo de status ok no resultado.
'OK'- RESULTADO =
Essa constante faz parte de uma API privada. Você deve evitar usar essa constante, se possÃvel, pois ela pode ser removida ou alterada no futuro.
A constante do campo de resultado.
'Resultado'
Recolhimento do Resumo do atributo de instância
- #connection ⤠Objeto Somente leitura
-
#connection_description ⤠Servidor::Description
Somente leitura
privado
Descrição do servidor do servidor no qual a operação foi executada e para o qual este resultado é.
-
#connection_global_id ⤠Objeto
Somente leitura
privado
Global é da conexão para a qual a operação foi realizada e para a qual serve este resultado.
-
#context â Operation::Context | nil
Somente leitura
privado
O contexto da operação (se houver) que estava ativo quando esse resultado foi produzido.
-
#replies â Array<Protocol::Message>
Somente leitura
privado
Respostas O protocolo de fio envolto responde.
Recolhimento do Resumo do método de instância
-
#reconhecido? ⤠verdadeiro, falso
O resultado é reconhecido?
-
#cluster_time ⤠ClusterTime | nada
Obtenha o tempo de agrupamento relatado na resposta do servidor.
-
#cursor_id ⤠Inteiro
privado
Obtenha o ID do cursor se a resposta for confirmada.
-
#documents ⤠Array<BSON::Document>
Obtenha os documentos no resultado.
-
#cada {|Cada| ... } ⤠Enumerador
Itere sobre os documentos nas respostas.
-
#error ⤠Error::OperationFailure::Family
privado
A instância de exceção (de Error::OperationFailure::Family) que seria gerada durante o processamento deste resultado.
-
#has_cursor_id? ⤠verdadeiro, falso
privado
Se o resultado contém cursor_id.
-
#initialize(replica, connection_description = nil, connection_global_id = nil, contexto: nil, conexão: nil) ⤠Resultado
construtor
privado
Inicialize um novo resultado.
-
#inspecionar ⤠string
Obtenha a inspeção formatada do resultado.
-
#rótulos ⤠Array
privado
Obtém o conjunto de etiquetas de erro associadas ao resultado.
-
#namespace â¤Nil
privado
Obtenha o namespace do cursor.
-
#ok? ⤠verdadeiro, falso
Verifique o campo ok do primeiro documento.
-
#operation_time ⤠Objeto | nada
Obtenha o optime relatado na resposta do servidor.
-
#reply â Protocol::Message
privado
Obtenha a resposta a partir do resultado.
-
#returned_count ⤠Inteiro
Obtenha o número de documentos retornados pelo servidor neste lote.
- #snapshot_timestamp ⤠Objeto
-
#bem-sucedido? ⤠verdadeiro, falso
Se o resultado foi um comando, determine se foi considerado um sucesso.
-
#topology_version ⤠TopologyVersion | nada
privado
A versão da topologia.
-
#validate! â Result
privado
Valide o resultado verificando se há erros.
-
#write_concern_error? ⤠Booleano
privado
Se a operação falhou com um erro de write concern.
-
#escrita_contagem ⤠Inteiro (também: #n)
Obtenha o número de documentos escritos pelo servidor.
Detalhes do construtor
#initialize(replica, connection_description = nil, connection_global_id = nil, contexto: nil, conexão: nil) ⤠Resultado
Este método faz parte de uma API privada. Evite usar esse método, se possÃvel, pois ele pode ser removido ou alterado no futuro.
Inicialize um novo resultado.
Para uma escrita não reconhecida, passe nulo nas respostas.
For all other operations, replies must be a Protocol::Message instance or an array containing a single Protocol::Message instance.
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# Arquivo 'lib/mongo/operation/result.rb', linha 104 def inicializar(respostas, connection_description = nada, connection_global_id = nada, contexto: nada, conexão: nada) @context = Contexto Método a menos que respostas se respostas.is_a?(Array) aumentar ArgumentError, "Somente uma (ou zero) resposta é suportada, dadas #{respostas.comprimento}" se respostas.Tamanho != 1 responder = respostas.primeiro mais responder = respostas end a menos que responder.is_a?(protocolo::mensagem) aumentar ArgumentError, "O argumento deve ser uma instância de Mensagem, mas é um #{resposta.classe}: #{resposta.inspecionar}" end @replica = [ responder ] @connection_description = connection_description @connection_global_id = connection_global_id @connection = Conexão end |
Detalhes do atributo da instância
#connection ⤠Object (somente leitura)
149 150 151 |
# Arquivo 'lib/mongo/operation/result.rb', linha 149 def Conexão @connection end |
#connection_description ⤠Servidor::Description (somente leitura)
Este método faz parte de uma API privada. Evite usar esse método, se possÃvel, pois ele pode ser removido ou alterado no futuro.
Retorna a descrição do servidor MongoDB do servidor no qual a operação foi executada e para o qual este resultado é.
135 136 137 |
# Arquivo 'lib/mongo/operation/result.rb', linha 135 def connection_description @connection_description end |
#connection_global_id ⤠Objeto (somente leitura)
Este método faz parte de uma API privada. Evite usar esse método, se possÃvel, pois ele pode ser removido ou alterado no futuro.
Retorna Global é da conexão para a qual a operação foi executada e para o qual este resultado é.
141 142 143 |
# Arquivo 'lib/mongo/operation/result.rb', linha 141 def connection_global_id @connection_global_id end |
#context ⤠Operação::Context | nil (somente leitura)
Este método faz parte de uma API privada. Evite usar esse método, se possÃvel, pois ele pode ser removido ou alterado no futuro.
Retorna o contexto da operação (se houver) que estava ativo quando este resultado foi produzido.
147 148 149 |
# Arquivo 'lib/mongo/operation/result.rb', linha 147 def Contexto @context end |
#replies â Array<Protocol::Message> (readonly)
Este método faz parte de uma API privada. Evite usar esse método, se possÃvel, pois ele pode ser removido ou alterado no futuro.
Retorna respostas O protocolo de fio envolto responde.
129 130 131 |
# Arquivo 'lib/mongo/operation/result.rb', linha 129 def respostas @replica end |
Detalhes do método de instância
#reconhecido? ⤠true, false
O resultado é reconhecido?
161 162 163 |
# Arquivo 'lib/mongo/operation/result.rb', linha 161 def reconhecido? !!@replica end |
#cluster_time ⤠ClusterTime | nada
Obtenha o tempo de agrupamento relatado na resposta do servidor.
Alterado na versão 2.9.0: Esse atributo se tornou uma instância de ClusterTime, que é uma subclasse de BSON::Document. Anteriormente, era uma instância de BSON::Document.
427 428 429 |
# Arquivo 'lib/mongo/operation/result.rb', linha 427 def cluster_time first_document && ClusterTime[first_document['$clusterTime']] end |
#cursor_id ⤠Inteiro
Este método faz parte de uma API privada. Evite usar esse método, se possÃvel, pois ele pode ser removido ou alterado no futuro.
As IDs de cursor 0 indicam que não há cursor no servidor.
Obtenha o ID do cursor se a resposta for confirmada.
185 186 187 |
# Arquivo 'lib/mongo/operation/result.rb', linha 185 def cursor_id reconhecido? ? respostas.último.cursor_id : 0 end |
#documents ⤠Array<BSON::Document>
Obtenha os documentos no resultado.
209 210 211 212 213 214 215 |
# Arquivo 'lib/mongo/operation/result.rb', linha 209 def documentos se reconhecido? respostas.flat_map(&:documents) mais [] end end |
#cada {|Cada| ... } ⤠Enumerador
Itere sobre os documentos nas respostas.
230 231 232 |
# Arquivo 'lib/mongo/operation/result.rb', linha 230 def cada(&noum: bloco ; verb: bloquear) documentos.cada(&noum: bloco ; verb: bloquear) end |
#error ⤠Error::OperationFailure::Family
Este método faz parte de uma API privada. Evite usar esse método, se possÃvel, pois ele pode ser removido ou alterado no futuro.
A instância de exceção (de Error::OperationFailure::Family) que seria gerada durante o processamento deste resultado.
Este método só deve ser chamado quando o resultado não for bem-sucedido.
344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 |
# Arquivo 'lib/mongo/operation/result.rb', linha 344 def Erro @erro ||= operation_failure_class.Novo( parser., auto, código: parser.código, code_name: parser.code_name, write_concern_error_document: parser.write_concern_error_document, write_concern_error_code: parser.write_concern_error_code, write_concern_error_code_name: parser.write_concern_error_code_name, write_concern_error_labels: parser.write_concern_error_labels, rótulos: parser.rótulos, wtimeout: parser.tempo esgotado, connection_description: connection_description, Documento: parser.documento, server_message: parser. ) end |
#has_cursor_id? ⤠true, false
Este método faz parte de uma API privada. Evite usar esse método, se possÃvel, pois ele pode ser removido ou alterado no futuro.
Se o resultado contém cursor_id
170 171 172 |
# Arquivo 'lib/mongo/operation/result.rb', linha 170 def has_cursor_id? reconhecido? && respostas.último.respond_to?(:cursor_id) end |
#inspecionar ⤠string
Obtenha a inspeção formatada do resultado.
243 244 245 |
# Arquivo 'lib/mongo/operation/result.rb', linha 243 def inspecionar "#<#{self.class.name}:0x#{object_id} documents=#{documents}>" end |
#rótulos ⤠Array
Este método faz parte de uma API privada. Evite usar esse método, se possÃvel, pois ele pode ser removido ou alterado no futuro.
Obtém o conjunto de etiquetas de erro associadas ao resultado.
440 441 442 |
# Arquivo 'lib/mongo/operation/result.rb', linha 440 def rótulos @labels ||= parser.rótulos end |
#namespace â¤Nil
Este método faz parte de uma API privada. Evite usar esse método, se possÃvel, pois ele pode ser removido ou alterado no futuro.
Obtenha o namespace do cursor. O método deve ser definido em classes de resultado onde 'ns' estiver na resposta do servidor .
196 197 198 |
# Arquivo 'lib/mongo/operation/result.rb', linha 196 def namespace nada end |
#ok? ⤠true, false
Verifique o campo ok do primeiro documento.
308 309 310 311 312 313 314 315 |
# Arquivo 'lib/mongo/operation/result.rb', linha 308 def tudo bem? # first_document[OK] é flutuante e o servidor pode retornar # ok como BSON int32, BSON int64 ou BSON double. # O número 1 é exatamente representável em um flutuador, portanto # 1.0 == 1 vai funcionar corretamente o tempo todo # (até que o servidor retorne algo diferente de 1 para o sucesso, ou seja) first_document[OK] == 1 end |
#operation_time ⤠Objeto | nada
Obtenha o optime relatado na resposta do servidor.
410 411 412 |
# Arquivo 'lib/mongo/operation/result.rb', linha 410 def operation_time first_document && first_document[operation_time] end |
#reply â Protocol::Message
Este método faz parte de uma API privada. Evite usar esse método, se possÃvel, pois ele pode ser removido ou alterado no futuro.
Obtenha a resposta a partir do resultado.
Retorna nulo se não houver resposta (ou seja, a operação foi uma gravação não reconhecida).
256 257 258 259 260 |
# Arquivo 'lib/mongo/operation/result.rb', linha 256 def responder Método a menos que reconhecido? respostas.primeiro end |
#returned_count ⤠Inteiro
Obtenha o número de documentos retornados pelo servidor neste lote.
268 269 270 271 272 273 274 |
# Arquivo 'lib/mongo/operation/result.rb', linha 268 def returned_count se reconhecido? responder.number_returned mais 0 end end |
#snapshot_timestamp ⤠Objeto
451 452 453 454 455 |
# Arquivo 'lib/mongo/operation/result.rb', linha 451 def Método a menos que doc = responder.documentos.primeiro doc['cursor']&.[]('atClusterTime') || doc['atClusterTime'] end |
#bem-sucedido? ⤠true, false
Se a escrita não foi reconhecida, isso sempre retornará verdadeiro.
Se o resultado foi um comando, determine se foi considerado um sucesso.
289 290 291 292 293 294 295 296 297 |
# Arquivo 'lib/mongo/operation/result.rb', linha 289 def bem-sucedido? Método true a menos que reconhecido? se first_document.has_key?(OK) tudo bem? && parser..vazio? mais !query_failure? && parser..vazio? end end |
#topology_version ⤠TopologyVersion | nada
Este método faz parte de uma API privada. Evite usar esse método, se possÃvel, pois ele pode ser removido ou alterado no futuro.
Retorna a versão da topologia.
373 374 375 376 377 378 379 |
# Arquivo 'lib/mongo/operation/result.rb', linha 373 def topology_version a menos que definido?(@topology_version) @topology_version = first_document['topologyVersion'] && Versão de topologia.Novo(first_document['topologyVersion']) end @topology_version end |
#validar! ⤠Resultado
Este método faz parte de uma API privada. Evite usar esse método, se possÃvel, pois ele pode ser removido ou alterado no futuro.
Isso apenas verifica erros com gravações, pois a autenticação é tratada no nÃvel da conexão e quaisquer erros de autenticação seriam gerados lá, antes que um resultado seja criado.
Valide o resultado verificando se há erros.
332 333 334 |
# Arquivo 'lib/mongo/operation/result.rb', linha 332 def validar! bem-sucedido? ? auto : create_operation_failure end |
#write_concern_error? ⤠Booleano
Este método faz parte de uma API privada. Evite usar esse método, se possÃvel, pois ele pode ser removido ou alterado no futuro.
Se a operação falhou com um erro de write concern.
447 448 449 |
# Arquivo 'lib/mongo/operation/result.rb', linha 447 def write_concern_error? !!(first_document && first_document['writeConcernError']) end |
#escrita_contagem ⤠Inteiro Também conhecido como: n
Obtenha o número de documentos escritos pelo servidor.
390 391 392 393 394 395 396 |
# Arquivo 'lib/mongo/operation/result.rb', linha 390 def escritas_count se reconhecido? first_document[N] || 0 mais 0 end end |