Classe: Mongo::Operação::Result
- Herda:
-
Objeto
- Objeto
- Mongo::Operação::Resultado
- Estendido por:
- Encaminhável
- Inclui:
- Enumerável
- Definido em:
- build/ruby-driver-v2.19/lib/mongo/operation/result.rb,
build/ruby-driver-v2.19/lib/mongo/operation/shared/result/aggregatable.rb,
build/ruby-driver-v2.19/lib/mongo/operation/shared/result/use_legacy_error_parser.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
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_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.
-
#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
privado
A instância de exceção (da classe Error::OperationFailure) que seria gerada durante o processamento deste resultado.
-
#has_cursor_id? ➤ verdadeiro, falso
privado
Se o resultado contém cursor_id.
-
#initialize(respostas, connection_description = nil, connection_global_id = 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(respostas, connection_description = nil, connection_global_id = 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.
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'build/ruby-driver-v2.19/lib/mongo/operation/result.rb', linha 105 def inicializar(respostas, connection_description = nada, connection_global_id = nada) 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 end end |
Detalhes do atributo da instância
#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 é.
133 134 135 |
# File 'build/ruby-driver-v2.19/lib/mongo/operation/result.rb', linha 133 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 é.
139 140 141 |
# File 'build/ruby-driver-v2.19/lib/mongo/operation/result.rb', linha 139 def connection_global_id @connection_global_id 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.
127 128 129 |
# File 'build/ruby-driver-v2.19/lib/mongo/operation/result.rb', linha 127 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?
157 158 159 |
# File 'build/ruby-driver-v2.19/lib/mongo/operation/result.rb', linha 157 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.
424 425 426 |
# File 'build/ruby-driver-v2.19/lib/mongo/operation/result.rb', linha 424 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.
181 182 183 |
# File 'build/ruby-driver-v2.19/lib/mongo/operation/result.rb', linha 181 def cursor_id reconhecido? ? respostas.último.cursor_id : 0 end |
#documents ➤ Array<BSON::Document>
Obtenha os documentos no resultado.
205 206 207 208 209 210 211 |
# File 'build/ruby-driver-v2.19/lib/mongo/operation/result.rb', linha 205 def documentos se reconhecido? respostas.flat_map(&:documents) mais [] end end |
#cada {|Cada| ... } ➤ Enumerador
Itere sobre os documentos nas respostas.
226 227 228 |
# File 'build/ruby-driver-v2.19/lib/mongo/operation/result.rb', linha 226 def cada(&noum: bloco ; verb: bloquear) documentos.cada(&noum: bloco ; verb: bloquear) end |
#error ➤ Error::OperationFailure
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 (da classe Error::OperationFailure) que seria gerada durante o processamento deste resultado.
Este método só deve ser chamado quando o resultado não for bem-sucedido.
341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 |
# File 'build/ruby-driver-v2.19/lib/mongo/operation/result.rb', linha 341 def Erro @erro ||= Erro::Falha de operação.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
166 167 168 |
# File 'build/ruby-driver-v2.19/lib/mongo/operation/result.rb', linha 166 def has_cursor_id? reconhecido? && respostas.último.respond_to?(:cursor_id) end |
#inspecionar ➤ string
Obtenha a inspeção formatada do resultado.
239 240 241 |
# File 'build/ruby-driver-v2.19/lib/mongo/operation/result.rb', linha 239 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.
437 438 439 |
# File 'build/ruby-driver-v2.19/lib/mongo/operation/result.rb', linha 437 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.
192 193 194 |
# File 'build/ruby-driver-v2.19/lib/mongo/operation/result.rb', linha 192 def namespace nada end |
#ok? ➤ true, false
Verifique o campo ok do primeiro documento.
305 306 307 308 309 310 311 312 |
# File 'build/ruby-driver-v2.19/lib/mongo/operation/result.rb', linha 305 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.
407 408 409 |
# File 'build/ruby-driver-v2.19/lib/mongo/operation/result.rb', linha 407 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).
252 253 254 255 256 257 258 |
# File 'build/ruby-driver-v2.19/lib/mongo/operation/result.rb', linha 252 def responder se reconhecido? respostas.primeiro mais nada end end |
#returned_count ➤ Inteiro
Obtenha o número de documentos retornados pelo servidor neste lote.
266 267 268 269 270 271 272 |
# File 'build/ruby-driver-v2.19/lib/mongo/operation/result.rb', linha 266 def returned_count se reconhecido? responder.number_returned mais 0 end end |
#snapshot_timestamp ➤ Objeto
448 449 450 451 452 |
# File 'build/ruby-driver-v2.19/lib/mongo/operation/result.rb', linha 448 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.
287 288 289 290 291 292 293 294 |
# File 'build/ruby-driver-v2.19/lib/mongo/operation/result.rb', linha 287 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.
370 371 372 373 374 375 376 |
# File 'build/ruby-driver-v2.19/lib/mongo/operation/result.rb', linha 370 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.
329 330 331 |
# File 'build/ruby-driver-v2.19/lib/mongo/operation/result.rb', linha 329 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.
444 445 446 |
# File 'build/ruby-driver-v2.19/lib/mongo/operation/result.rb', linha 444 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.
387 388 389 390 391 392 393 |
# File 'build/ruby-driver-v2.19/lib/mongo/operation/result.rb', linha 387 def escritas_count se reconhecido? first_document[N] || 0 mais 0 end end |