Classe: Mongo::Operação::Result

Herda:
Objeto
  • Objeto
mostrar tudo
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).

Desde:

  • 2.0.0

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.

Desde:

  • 2.2.0

'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.

Desde:

  • 2.2.0

'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.

Desde:

  • 2.2.0

'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.

Desde:

  • 2.2.0

'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.

Desde:

  • 2.2.0

'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.

Desde:

  • 2.0.0

'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.

Desde:

  • 2.0.0

'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.

Desde:

  • 2.2.0

'resultado'.congelar

Recolhimento do Resumo do atributo de instância

Recolhimento do Resumo do método de instância

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.

Parâmetros:

  • respostas (Protocol::Message | Array<Protocol::Message> | nil)

    O protocolo de fio responde.

  • connection_description (Servidor::Descrição | nil) (padrão para: nil)

    Descrição do servidor MongoDB do servidor que executou a operação para a qual este resultado é. Este parâmetro pode ser nulo para compatibilidade com a biblioteca mongo_kerberos existente, mas sempre deve ser não nulo no driver adequado.

  • connection_global_id (Inteiro) (padrão para: nil)

    ID global da conexão na qual a operação para a qual este resultado é executado foi executada.

Desde:

  • 2.0.0



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_descriptionServidor::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 é.

Retorna:

  • (Server::Description)

    Descrição do servidor do servidor no qual a operação foi executada e para o qual este resultado é.

Desde:

  • 2.0.0



133
134
135
# File 'build/ruby-driver-v2.19/lib/mongo/operation/result.rb', linha 133

def connection_description
  @connection_description
end

#connection_global_idObjeto (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 é.

Retorna:

  • (Objeto)

    Global é da conexão para a qual a operação foi realizada e para a qual serve este resultado.

Desde:

  • 2.0.0



139
140
141
# File 'build/ruby-driver-v2.19/lib/mongo/operation/result.rb', linha 139

def connection_global_id
  @connection_global_id
end

#repliesArray<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.

Retorna:

Desde:

  • 2.0.0



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

Observação:

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?

Retorna:

  • (verdadeiro, falso)

    Se o resultado for reconhecido.

Desde:

  • 2.0.0



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.

Exemplos:

Obtenha o tempo de cluster.

result.cluster_time

Retorna:

  • (ClusterTime | nil)

    O documento de tempo do cluster.

Desde:

  • 2.5.0



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.

Observação:

As IDs de cursor 0 indicam que não há cursor no servidor.

Obtenha o ID do cursor se a resposta for confirmada.

Exemplos:

Obtenha o ID do cursor.

result.cursor_id

Retorna:

  • (Inteiro)

    O ID do cursor.

Desde:

  • 2.0.0



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

#documentsArray<BSON::Document>

Obtenha os documentos no resultado.

Exemplos:

Pegue os documentos.

result.documents

Retorna:

  • (Array<BSON::Document>)

    Os documentos.

Desde:

  • 2.0.0



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.

Exemplos:

Iterar sobre os documentos.

result.each do |doc|
  p doc
end

Parâmetros de rendimento:

  • Cada (BSON::Document)

    documento no resultado.

Retorna:

  • (Enumerador)

    O enumerador.

Desde:

  • 2.0.0



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

#errorError::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.

Retorna:

Desde:

  • 2.0.0



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.mensagem,
    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_message,
  )
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

Retorna:

  • (verdadeiro, falso)

    Se o resultado contiver cursor_id.

Desde:

  • 2.0.0



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

#inspecionarstring

Obtenha a inspeção formatada do resultado.

Exemplos:

Inspecione o resultado.

result.inspect

Retorna:

  • (string)

    A inspeção.

Desde:

  • 2.0.0



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ótulosArray

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.

Exemplos:

Obtenha os rótulos.

result.labels

Retorna:

  • (Array)

    rótulos O conjunto de rótulos.

Desde:

  • 2.7.0



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.

Retorna:

  • (Nil)

Desde:

  • 2.0.0



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.

Exemplos:

Verifique o campo ok.

result.ok?

Retorna:

  • (verdadeiro, falso)

    Se o comando retornou tudo bem.

Desde:

  • 2.1.0



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_timeObjeto | nada

Obtenha o optime relatado na resposta do servidor.

Exemplos:

Obtenha o optime.

result.operation_time

Retorna:

  • (Object | nil)

    O valor optime .

Desde:

  • 2.5.0



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

#replyProtocol::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).

Retorna:

Desde:

  • 2.0.0



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_countInteiro

Obtenha o número de documentos retornados pelo servidor neste lote.

Retorna:

  • (Inteiro)

    O número de documentos devolvidos.

Desde:

  • 2.0.0



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_timestampObjeto

Desde:

  • 2.0.0



448
449
450
451
452
# File 'build/ruby-driver-v2.19/lib/mongo/operation/result.rb', linha 448

def snapshot_timestamp
  se doc = responder.documentos.primeiro
    doc['cursor']&.[]('atClusterTime') || doc['atClusterTime']
  end
end

#bem-sucedido?true, false

Observação:

Se a escrita não foi reconhecida, isso sempre retornará verdadeiro.

Se o resultado foi um comando, determine se foi considerado um sucesso.

Exemplos:

O comando foi bem-sucedido?

result.successful?

Retorna:

  • (verdadeiro, falso)

    Se o comando foi bem-sucedido.

Desde:

  • 2.0.0



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.mensagem.vazio?
  mais
    !query_failure? && parser.mensagem.vazio?
  end
end

#topology_versionTopologyVersion | 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.

Retorna:

Desde:

  • 2.0.0



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.

Observação:

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.

Exemplos:

Valide o resultado.

result.validate!

Retorna:

  • (Resultado)

    O resultado se a verificação for aprovada.

Aumenta:

Desde:

  • 2.0.0



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.

Retorna:

  • (Booleano)

Desde:

  • 2.0.0



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.

Exemplos:

Obtenha o número de documentos gravados.

result.written_count

Retorna:

  • (Inteiro)

    O número de documentos escritos.

Desde:

  • 2.0.0



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