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

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

Desde:

  • 2.0.0

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.

Desde:

  • 2.2.0

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

Desde:

  • 2.2.0

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

Desde:

  • 2.2.0

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

Desde:

  • 2.2.0

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

Desde:

  • 2.2.0

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

Desde:

  • 2.0.0

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

Desde:

  • 2.0.0

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

Desde:

  • 2.2.0

'Resultado'

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



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)

Desde:

  • 2.0.0



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

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



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

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



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.

Retorna:

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

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

Desde:

  • 2.0.0



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.

Retorna:

Desde:

  • 2.0.0



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?

Retorna:

  • (verdadeiro, falso) —

    Se o resultado for reconhecido.

Desde:

  • 2.0.0



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.

Exemplos:

Obtenha o tempo de cluster.

result.cluster_time

Retorna:

  • (ClusterTime | nil) —

    O documento de tempo do cluster.

Desde:

  • 2.5.0



427
428
429
# Arquivo 'lib/mongo/operation/result.rb', linha 427

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



185
186
187
# Arquivo 'lib/mongo/operation/result.rb', linha 185

def cursor_id
  reconhecido? ? respostas.último.cursor_id : 0
end

#documents ➤ Array<BSON::Document>

Obtenha os documentos no resultado.

Exemplos:

Pegue os documentos.

result.documents

Retorna:

  • (Array<BSON::Document>) —

    Os documentos.

Desde:

  • 2.0.0



209
210
211
212
213
214
215
# Arquivo 'lib/mongo/operation/result.rb', linha 209

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



230
231
232
# Arquivo 'lib/mongo/operation/result.rb', linha 230

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.

Retorna:

  • (Erro::OperationFailure::Family) —

    A exceção.

Desde:

  • 2.0.0



344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
# Arquivo 'lib/mongo/operation/result.rb', linha 344

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



170
171
172
# Arquivo 'lib/mongo/operation/result.rb', linha 170

def has_cursor_id?
  reconhecido? && respostas.último.respond_to?(:cursor_id)
end

#inspecionar ➤ string

Obtenha a inspeção formatada do resultado.

Exemplos:

Inspecione o resultado.

result.inspect

Retorna:

  • (string) —

    A inspeção.

Desde:

  • 2.0.0



243
244
245
# Arquivo 'lib/mongo/operation/result.rb', linha 243

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.

Exemplos:

Obtenha os rótulos.

result.labels

Retorna:

  • (Array) —

    rótulos O conjunto de rótulos.

Desde:

  • 2.7.0



440
441
442
# Arquivo 'lib/mongo/operation/result.rb', linha 440

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



196
197
198
# Arquivo 'lib/mongo/operation/result.rb', linha 196

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



308
309
310
311
312
313
314
315
# Arquivo 'lib/mongo/operation/result.rb', linha 308

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.

Exemplos:

Obtenha o optime.

result.operation_time

Retorna:

  • (Object | nil) —

    O valor optime .

Desde:

  • 2.5.0



410
411
412
# Arquivo 'lib/mongo/operation/result.rb', linha 410

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

Retorna:

Desde:

  • 2.0.0



256
257
258
259
260
# Arquivo 'lib/mongo/operation/result.rb', linha 256

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.

Retorna:

  • (Inteiro) —

    O número de documentos devolvidos.

Desde:

  • 2.0.0



268
269
270
271
272
273
274
# Arquivo 'lib/mongo/operation/result.rb', linha 268

def returned_count
  se reconhecido?
    responder.number_returned
  mais
    0
  end
end

#snapshot_timestamp ➤ Objeto

Desde:

  • 2.0.0



451
452
453
454
455
# Arquivo 'lib/mongo/operation/result.rb', linha 451

def snapshot_timestamp
  Método a menos que doc = responder.documentos.primeiro

  doc['cursor']&.[]('atClusterTime') || doc['atClusterTime']
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



289
290
291
292
293
294
295
296
297
# Arquivo 'lib/mongo/operation/result.rb', linha 289

def bem-sucedido?
  Método true a menos que reconhecido?

  se first_document.has_key?(OK)
    tudo bem? && parser.mensagem.vazio?
  mais
    !query_failure? && parser.mensagem.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.

Retorna:

Desde:

  • 2.0.0



373
374
375
376
377
378
379
# Arquivo 'lib/mongo/operation/result.rb', linha 373

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:

  • (Erro::OperationFailure::Family) —

    Se houver um erro no resultado.

Desde:

  • 2.0.0



332
333
334
# Arquivo 'lib/mongo/operation/result.rb', linha 332

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.

Retorna:

  • (Booleano)

Desde:

  • 2.0.0



447
448
449
# Arquivo 'lib/mongo/operation/result.rb', linha 447

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



390
391
392
393
394
395
396
# Arquivo 'lib/mongo/operation/result.rb', linha 390

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