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

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

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

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.

  • Contexto (Operação::Contexto | nil) (padrão para: nil)

    o contexto que estava ativo quando esse resultado foi produzido.

Desde:

  • 2.0.0

[Ver fonte]

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

#connectionObject (somente leitura)

Desde:

  • 2.0.0


152
153
154
# Arquivo 'lib/mongo/operation/result.rb', linha 152

def Conexão
  @connection
end

#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


138
139
140
# Arquivo 'lib/mongo/operation/result.rb', linha 138

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


144
145
146
# Arquivo 'lib/mongo/operation/result.rb', linha 144

def connection_global_id
  @connection_global_id
end

#contextOperaçã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.

Retorna:

  • (Operação::Contexto | nil)

    o contexto da operação (se houver) que estava ativo quando esse resultado foi produzido.

Desde:

  • 2.0.0


150
151
152
# Arquivo 'lib/mongo/operation/result.rb', linha 150

def Contexto
  @context
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


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

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

[Ver fonte]

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.

Exemplos:

Obtenha o tempo de cluster.

result.cluster_time

Retorna:

  • (ClusterTime | nil)

    O documento de tempo do cluster.

Desde:

  • 2.5.0

[Ver fonte]

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.

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

[Ver fonte]

194
195
196
# Arquivo 'lib/mongo/operation/result.rb', linha 194

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

[Ver fonte]

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.

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

[Ver fonte]

239
240
241
# Arquivo 'lib/mongo/operation/result.rb', linha 239

def cada(&noum: bloco ; verb: bloquear)
  documentos.cada(&noum: bloco ; verb: bloquear)
end

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

Retorna:

Desde:

  • 2.0.0

[Ver fonte]

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

[Ver fonte]

179
180
181
# Arquivo 'lib/mongo/operation/result.rb', linha 179

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

[Ver fonte]

252
253
254
# Arquivo 'lib/mongo/operation/result.rb', linha 252

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

[Ver fonte]

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.

Retorna:

  • (Nil)

Desde:

  • 2.0.0

[Ver fonte]

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.

Exemplos:

Verifique o campo ok.

result.ok?

Retorna:

  • (verdadeiro, falso)

    Se o comando retornou tudo bem.

Desde:

  • 2.1.0

[Ver fonte]

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_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

[Ver fonte]

420
421
422
# Arquivo 'lib/mongo/operation/result.rb', linha 420

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

[Ver fonte]

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_countInteiro

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

Retorna:

  • (Inteiro)

    O número de documentos devolvidos.

Desde:

  • 2.0.0

[Ver fonte]

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_timestampObjeto

Desde:

  • 2.0.0

[Ver fonte]

461
462
463
464
465
# Arquivo 'lib/mongo/operation/result.rb', linha 461

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

[Ver fonte]

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

[Ver fonte]

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.

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

[Ver fonte]

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.

Retorna:

  • (Booleano)

Desde:

  • 2.0.0

[Ver fonte]

457
458
459
# Arquivo 'lib/mongo/operation/result.rb', linha 457

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

[Ver fonte]

400
401
402
403
404
405
406
# Arquivo 'lib/mongo/operation/result.rb', linha 400

def escritas_count
  se reconhecido?
    first_document[N] || 0
  mais
    0
  end
end