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.
-
#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.
429 430 431 |
# Arquivo 'lib/mongo/operation/result.rb', linha 429 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.
176 177 178 179 180 181 182 183 184 185 186 187 188 |
# Arquivo 'lib/mongo/operation/result.rb', linha 176 def cursor_id Método 0 a menos que reconhecido? se respostas.último.respond_to?(:cursor_id) # As respostas do OP_REPLY legado expõem o ID do cursor diretamente. respostas.último.cursor_id elsif first_document.chave?(Cursor) As respostas do comando # OP_MSG carregam o ID do cursor no subdocumento `cursor`. first_document[Cursor][CURSOR_ID] || 0 mais 0 end end |
#documents ➤ Array<BSON::Document>
Obtenha os documentos no resultado.
210 211 212 213 214 215 216 |
# Arquivo 'lib/mongo/operation/result.rb', linha 210 def documentos se reconhecido? respostas.flat_map(&:documents) mais [] end end |
#cada {|Cada| ... } ➤ Enumerador
Itere sobre os documentos nas respostas.
231 232 233 |
# Arquivo 'lib/mongo/operation/result.rb', linha 231 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.
345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 |
# Arquivo 'lib/mongo/operation/result.rb', linha 345 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., server_address: connection_description ) end |
#inspecionar ➤ string
Obtenha a inspeção formatada do resultado.
244 245 246 |
# Arquivo 'lib/mongo/operation/result.rb', linha 244 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.
442 443 444 |
# Arquivo 'lib/mongo/operation/result.rb', linha 442 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 .
197 198 199 |
# Arquivo 'lib/mongo/operation/result.rb', linha 197 def namespace nada end |
#ok? ➤ true, false
Verifique o campo ok do primeiro documento.
309 310 311 312 313 314 315 316 |
# Arquivo 'lib/mongo/operation/result.rb', linha 309 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.
412 413 414 |
# Arquivo 'lib/mongo/operation/result.rb', linha 412 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).
257 258 259 260 261 |
# Arquivo 'lib/mongo/operation/result.rb', linha 257 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.
269 270 271 272 273 274 275 |
# Arquivo 'lib/mongo/operation/result.rb', linha 269 def returned_count se reconhecido? responder.number_returned mais 0 end end |
#snapshot_timestamp ➤ Objeto
453 454 455 456 457 |
# Arquivo 'lib/mongo/operation/result.rb', linha 453 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.
290 291 292 293 294 295 296 297 298 |
# Arquivo 'lib/mongo/operation/result.rb', linha 290 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.
375 376 377 378 379 380 381 |
# Arquivo 'lib/mongo/operation/result.rb', linha 375 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.
333 334 335 |
# Arquivo 'lib/mongo/operation/result.rb', linha 333 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.
449 450 451 |
# Arquivo 'lib/mongo/operation/result.rb', linha 449 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.
392 393 394 395 396 397 398 |
# Arquivo 'lib/mongo/operation/result.rb', linha 392 def escritas_count se reconhecido? first_document[N] || 0 mais 0 end end |