Classe: Mongo::Operação::Result
- Herda:
-
Objeto
- Objeto
- Mongo::Operação::Resultado
- Estendido por:
- Encaminhável
- Inclui:
- Enumerável
- Definido em:
- lib/mongo/operation/result.rb,
lib/mongo/operation/shared/result/aggregatable.rb,
lib/mongo/operation/shared/result/use_legacy_error_parser.rb mais...
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
Aggregate::Result, CollectionsInfo::Result, Delete::BulkResult, Delete::Result, Explicar::Result, Localizar::Result, GetMore::Result, Índices::Result, Inserir::BulkResult, Inserir::Result, ListCollections::Result, MapReduce::Result, ParallelScan::Result, Update::BulkResult, Update::Result, UsersInfo::Result
Definido sob namespace
Módulos: Agregatável, UseLegacyErrorParser
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'.congelar
- 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'.congelar
- 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'.congelar
- 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'.congelar
- 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'.congelar
- 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'.congelar
- 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'.congelar
- 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'.congelar
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.
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
# Arquivo 'lib/mongo/operation/result.rb', linha 107 def inicializar(respostas, connection_description = nada, connection_global_id = nada, contexto: nada, conexão: nada) @context = Contexto se respostas se respostas.is_a?(Array) se respostas.Tamanho != 1 aumentar ArgumentError, "Somente uma (ou zero) resposta é suportada, dadas #{respostas.comprimento}" end 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 end |
Detalhes do atributo da instância
#connection ➤ Object (somente leitura)
152 153 154 |
# Arquivo 'lib/mongo/operation/result.rb', linha 152 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 é.
138 139 140 |
# Arquivo 'lib/mongo/operation/result.rb', linha 138 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 é.
144 145 146 |
# Arquivo 'lib/mongo/operation/result.rb', linha 144 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.
150 151 152 |
# Arquivo 'lib/mongo/operation/result.rb', linha 150 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.
132 133 134 |
# Arquivo 'lib/mongo/operation/result.rb', linha 132 def respostas @replica end |
Detalhes do método de instância
#reconhecido? ➤ true, false
No MongoDB 2.6 e superior, todas as gravações são reconhecidas, pois o driver usa comandos de gravação para todas as operações de gravação. No 2.4 e inferior, o resultado é reconhecido se o GLE tiver sido executado após o comando. Caso contrário, nenhuma resposta será especificada. As leituras sempre retornarão verdadeiras aqui, pois uma resposta é sempre fornecida.
O resultado é reconhecido?
170 171 172 |
# Arquivo 'lib/mongo/operation/result.rb', linha 170 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.
437 438 439 |
# Arquivo 'lib/mongo/operation/result.rb', linha 437 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.
194 195 196 |
# Arquivo 'lib/mongo/operation/result.rb', linha 194 def cursor_id reconhecido? ? respostas.último.cursor_id : 0 end |
#documents ➤ Array<BSON::Document>
Obtenha os documentos no resultado.
218 219 220 221 222 223 224 |
# Arquivo 'lib/mongo/operation/result.rb', linha 218 def documentos se reconhecido? respostas.flat_map(&:documents) mais [] end end |
#cada {|Cada| ... } ➤ Enumerador
Itere sobre os documentos nas respostas.
239 240 241 |
# Arquivo 'lib/mongo/operation/result.rb', linha 239 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.
354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 |
# Arquivo 'lib/mongo/operation/result.rb', linha 354 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
179 180 181 |
# Arquivo 'lib/mongo/operation/result.rb', linha 179 def has_cursor_id? reconhecido? && respostas.último.respond_to?(:cursor_id) end |
#inspecionar ➤ string
Obtenha a inspeção formatada do resultado.
252 253 254 |
# Arquivo 'lib/mongo/operation/result.rb', linha 252 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.
450 451 452 |
# Arquivo 'lib/mongo/operation/result.rb', linha 450 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.
205 206 207 |
# Arquivo 'lib/mongo/operation/result.rb', linha 205 def namespace nada end |
#ok? ➤ true, false
Verifique o campo ok do primeiro documento.
318 319 320 321 322 323 324 325 |
# Arquivo 'lib/mongo/operation/result.rb', linha 318 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.
420 421 422 |
# Arquivo 'lib/mongo/operation/result.rb', linha 420 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).
265 266 267 268 269 270 271 |
# Arquivo 'lib/mongo/operation/result.rb', linha 265 def responder se reconhecido? respostas.primeiro mais nada end end |
#returned_count ➤ Inteiro
Obtenha o número de documentos retornados pelo servidor neste lote.
279 280 281 282 283 284 285 |
# Arquivo 'lib/mongo/operation/result.rb', linha 279 def returned_count se reconhecido? responder.number_returned mais 0 end end |
#snapshot_timestamp ➤ Objeto
461 462 463 464 465 |
# Arquivo 'lib/mongo/operation/result.rb', linha 461 def se doc = responder.documentos.primeiro doc['cursor']&.[]('atClusterTime') || doc['atClusterTime'] end 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.
300 301 302 303 304 305 306 307 |
# Arquivo 'lib/mongo/operation/result.rb', linha 300 def bem-sucedido? Método true se !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.
383 384 385 386 387 388 389 |
# Arquivo 'lib/mongo/operation/result.rb', linha 383 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.
342 343 344 |
# Arquivo 'lib/mongo/operation/result.rb', linha 342 def validar! !bem-sucedido? ? create_operation_failure : auto 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.
457 458 459 |
# Arquivo 'lib/mongo/operation/result.rb', linha 457 def write_concern_error? !!(first_document && first_document['writeConcernError']) end |