Clase: Mongo::Operation::Result

Hereda:
Objeto
  • Objeto
Mostrar todo
Ampliado por:
Reenviable
Incluye:
Enumerable
Definido en:
lib/mongo/operación/result.rb,
lib/mongo/operación/shared/result/aggregatable.rb,
lib/mongo/operación/shared/result/use_legacy_error_parser.rb

Overview

Contenedor de resultados para respuestas de protocolo de cable.

Una operación tiene cero o una respuesta. Las únicas operaciones que producen cero respuestas son las escrituras no reconocidas; todas las demás operaciones producen una respuesta. Esta clase proporciona un objeto que puede ser operado (por ejemplo, para verificar si una operación se realizó con éxito) incluso cuando la operación no produjo una respuesta (en cuyo caso, se asume que fue exitosa).

Desde:

  • 2.0.0

Subclases conocidas directas

Agregado::Resultado, Informaciónde colecciones::Resultado, Eliminar::Resultado masivo, Eliminar::Resultado, Explicar::Resultado, Buscar::Resultado, Obtener más::Resultado, Índices::Resultado, Insertar::Resultado masivo, Insertar::Resultado, Listarcolecciones::Resultado, MapReduce::Resultado, Escaneo paralelo::Resultado, Actualizar::Resultado masivo, Actualizar::Resultado, Informaciónde usuarios::Resultado

Definido bajo Namespace

Modules: Agregable, UseLegacyErrorParser

Colapso delresumen constante

CURSOR =

Esta constante forma parte de una API privada. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.

El nombre del campo para el documento del cursor en una agregación.

Desde:

  • 2.2.0

'cursor'.freeze
ID DEL CURSOR =

Esta constante forma parte de una API privada. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.

El campo de identificación del cursor en el documento del cursor.

Desde:

  • 2.2.0

'id'.freeze
PRIMER_LOTE =

Esta constante forma parte de una API privada. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.

El nombre del campo para el primer lote de un cursor.

Desde:

  • 2.2.0

'primer lote '.freeze
NEXT_BATCH =

Esta constante forma parte de una API privada. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.

El nombre del campo para el siguiente lote de un cursor.

Desde:

  • 2.2.0

'nextBatch'.freeze
namespace =

Esta constante forma parte de una API privada. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.

El campo namespace en el documento del cursor.

Desde:

  • 2.2.0

'ns'.freeze
N =

Esta constante forma parte de una API privada. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.

El número de documentos actualizados en la escritura.

Desde:

  • 2.0.0

'n'.freeze
Aceptar =

Esta constante forma parte de una API privada. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.

El campo de estado ok en el resultado.

Desde:

  • 2.0.0

'ok'.freeze
RESULTADO =

Esta constante forma parte de una API privada. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.

La constante del campo resultado.

Desde:

  • 2.2.0

'resultado'.freeze

Resumen de atributos de la instancia colapsar

Resumen del método de instancia colapsar

Detalles del constructor

#initialize(replies, connection_description = nil, connection_global_id = nil, context: nil, connection: nil) ⇒ Result

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Inicializa un nuevo resultado.

Para un guardado no reconocido, pasa nil en las respuestas.

For all other operations, replies must be a Protocol::Message instance or an array containing a single Protocol::Message instance.

Parámetros:

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

    El protocolo de conexión responde.

  • connection_description (Servidor::Descripción | nulo) (predeterminado: nulo)

    Descripción del servidor que realizó la operación a la que corresponde este resultado. Este parámetro puede ser nulo por compatibilidad con la biblioteca mongo_kerberos existente, pero siempre debe ser distinto de nulo en el controlador.

  • connection_global_id (Entero) (predeterminado: nulo)

    Identificador global de la conexión en la que se realizó la operación para la que corresponde este resultado.

  • context (Operation::Context | nil) (predeterminado: nulo)

    el contexto que estaba activo cuando se produjo este resultado.

Desde:

  • 2.0.0



107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# Archivo 'lib/mongo/operation/result.rb', línea 107

def inicializar(respuestas, connection_description = nulo, connection_global_id = nulo, context: nulo, conexión: nulo)
  @contexto = context

  si respuestas
    si respuestas.is_a?(Arreglo)
      si respuestas.longitud != 1
        propagar ArgumentError, "Solose admite una (o cero) respuesta, dado #{replies.length}"
      end
      respuesta = respuestas.primero
    else
      respuesta = respuestas
    end
    a menos que respuesta.is_a?(protocolo::Mensaje)
      propagar ArgumentError, "Elargumento debe ser una instancia de Message, pero es un #{reply.class}: #{reply.inspect}"
    end
    @replies = [ respuesta ]
    Este es el campo utilizado para describir la información enviada por los usuarios. = connection_description
    @connection_global_id = connection_global_id
    @conexión = Conexión
  end
end

Detalles de los atributos de instancia

#conexiónObjeto (solo lectura)

Desde:

  • 2.0.0



152
153
154
# Archivo 'lib/mongo/operation/result.rb', línea 152

def Conexión
  @conexión
end

#connection_descriptionServer::Description (solo lectura)

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve la descripción del servidor del servidor en el que se realizó la operación para la que se obtiene este resultado.

Devuelve:

  • (Servidor::Descripción)

    Descripción del servidor en el que se realizó la operación para la que está destinado este resultado.

Desde:

  • 2.0.0



138
139
140
# Archivo 'lib/mongo/operation/result.rb', línea 138

def connection_description
  Este es el campo utilizado para describir la información enviada por los usuarios.
end

#connection_global_idObjeto (solo lectura)

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Returns Global se refiere a la conexión en la que se realizó la operación para la que se produce este resultado.

Devuelve:

  • (objeto)

    Global se refiere a la conexión en la que se realizó la operación para la que se obtuvo este resultado.

Desde:

  • 2.0.0



144
145
146
# Archivo 'lib/mongo/operation/result.rb', línea 144

def connection_global_id
  @connection_global_id
end

#contextoOperación::Contexto | nil (solo lectura)

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve el contexto de operación (si lo hubo) que estaba activo cuando se produjo este resultado.

Devuelve:

  • (Operación::Contexto | nil)

    el contexto de la operación (si existe) que estaba activo cuando se produjo este resultado.

Desde:

  • 2.0.0



150
151
152
# Archivo 'lib/mongo/operation/result.rb', línea 150

def context
  @contexto
end

#repliesArray<Protocol::Message> (readonly)

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve respuestas Las respuestas envueltas del protocolo de conexión.

Devuelve:

  • (Array<Protocol::Message>)

    respuestas Las respuestas del protocolo de conexión envuelto.

Desde:

  • 2.0.0



132
133
134
# Archivo 'lib/mongo/operation/result.rb', línea 132

def respuestas
  @replies
end

Detalles del método de instancia

#reconocido?verdadero, falso

Nota:

En MongoDB 2.6 y superiores, todas las escrituras son reconocidas ya que el controlador utiliza comandos de escritura para todas las operaciones de escritura. En 2.4 y más bajos, el resultado se reconoce si el GLE se ha ejecutado después del comando. Si no es así, no se especificarán respuestas. Reads siempre devolverá "true" aquí ya que siempre se proporciona una respuesta.

¿Se reconoce el resultado?

Devuelve:

  • (verdadero,falso)

    Si se reconoce el resultado.

Desde:

  • 2.0.0



170
171
172
# Archivo 'lib/mongo/operation/result.rb', línea 170

def ¿entendido?
  !!@replies
end

#cluster_timeClusterTime | nil

Obtén la hora del clúster informada en la respuesta del servidor.

Cambiado en la versión 2.9.0: Este atributo se convirtió en una instancia de ClusterTime, que es una subclase de BSON::documento. Anteriormente era una instancia de BSON::documento.

Ejemplos:

Obtén el tiempo de clúster.

result.cluster_time

Devuelve:

  • (ClusterTime | nil)

    El documento de tiempo de clúster.

Desde:

  • 2.5.0



437
438
439
# Archivo 'lib/mongo/operation/result.rb', línea 437

def cluster_time
  first_document && Tiempo de clúster[first_document['$clusterTime']]
end

#cursor_idInteger

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Nota:

Los identificadores de cursor de 0 indican que no hay ningún cursor en el servidor.

Obten la ID de cursor si la respuesta está reconocida.

Ejemplos:

Obtener el id del cursor.

result.cursor_id

Devuelve:

  • (Número entero)

    El id del cursor.

Desde:

  • 2.0.0



194
195
196
# Archivo 'lib/mongo/operation/result.rb', línea 194

def cursor_id
  ¿entendido? ? respuestas.último.cursor_id : 0
end

#documentosArray<BSON::Document>

Obten los documentos en el resultado.

Ejemplos:

Obtenga los documentos.

result.documents

Devuelve:

  • (arreglo<BSON::Document>)

    Los documentos.

Desde:

  • 2.0.0



218
219
220
221
222
223
224
# Archivo 'lib/mongo/operation/result.rb', línea 218

def Documentos
  si ¿entendido?
    respuestas.flat_map(Y:documentos)
  else
    []
  end
end

#each {|Each| ... } ⇒ Enumerator

Itera sobre los documentos en las respuestas.

Ejemplos:

Iterar sobre los documentos.

result.each do |doc|
  p doc
end

Parámetros de rendimiento:

  • Cada uno (BSON::Document)

    documento en el resultado.

Devuelve:

  • (Enumerator)

    El enumerador.

Desde:

  • 2.0.0



239
240
241
# Archivo 'lib/mongo/operation/result.rb', línea 239

def cada(Ybloque)
  Documentos.cada(Ybloque)
end

#errorError::OperationFailure::Family

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

La instancia de excepción (de Error::OperationFailure::Family) que se generaría durante el procesamiento de este resultado.

Este método solo debe llamarse cuando el resultado no es exitoso.

Devuelve:

Desde:

  • 2.0.0



354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
# Archivo 'lib/mongo/operation/result.rb', línea 354

def Error
  @error ||= operation_failure_class.Nuevo(
    parser.mensaje,
    sí mismo,
    código: parser.Código,
    nombre_código: parser.nombre_clave,
    write_concern_error_document: parser.documento_de_error_de_gravedad_de_escritura,
    write_concern_error_code: parser.write_concern_error_code,
    nombre_del_código_de_error_de_preocupación_de_escritura: parser.write_concern_error_code_name,
    etiquetas de error de escritura de preocupación: parser.etiquetas de error de escritura de preocupación,
    etiquetas: parser.etiquetas,
    wtimeout: parser.wtimeout,
    connection_description: connection_description,
    documento: parser.Documento,
    server_message: parser.mensaje del servidor,
  )
end

#has_cursor_id?true, false

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Indica si el resultado contiene cursor_id

Devuelve:

  • (verdadero,falso)

    Si el resultado contiene cursor_id.

Desde:

  • 2.0.0



179
180
181
# Archivo 'lib/mongo/operation/result.rb', línea 179

def has_cursor_id?
  ¿entendido? && respuestas.último.respond_to?(:cursor_id)
end

#inspectString

Obtén la inspección de formato bonito del resultado.

Ejemplos:

Inspeccione el resultado.

result.inspect

Devuelve:

  • (string)

    La inspección.

Desde:

  • 2.0.0



252
253
254
# Archivo 'lib/mongo/operation/result.rb', línea 252

def inspeccionar
  "#<#{self.class.name}: 0x#{object_id} documentos=#{documentos}>"
end

#labelsarreglo

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Obtiene el conjunto de etiquetas de error asociadas con el resultado.

Ejemplos:

Consigue las etiquetas.

result.labels

Devuelve:

  • (arreglo)

    etiquetas El conjunto de etiquetas.

Desde:

  • 2.7.0



450
451
452
# Archivo 'lib/mongo/operation/result.rb', línea 450

def etiquetas
  @labels ||= parser.etiquetas
end

#namespaceNil

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Obtén el namespace del cursor. El método debe definirse en las clases de resultados donde ‘ns’ esté en la respuesta del servidor.

Devuelve:

  • (Nil)

Desde:

  • 2.0.0



205
206
207
# Archivo 'lib/mongo/operation/result.rb', línea 205

def namespace
  nulo
end

#¿ok?verdadero, falso

Revisa el campo ok del primer documento.

Ejemplos:

Marque el campo ok.

result.ok?

Devuelve:

  • (verdadero,falso)

    Si el comando regresó ok.

Desde:

  • 2.1.0



318
319
320
321
322
323
324
325
# Archivo 'lib/mongo/operation/result.rb', línea 318

def ok?
  # first_document[OK] es un número decimal y el servidor puede devolver
  # válido como un BSON int32, BSON int64 o un BSON double.
  # El número 1 es exactamente representable en un float, por lo tanto
  # 1.0 == 1 funcionará correctamente todo el tiempo
  # (hasta que el servidor devuelva algo diferente de 1 para el éxito, es decir)
  first_document[Vale] == 1
end

#operation_timeobjeto | nil

Obtenga el tiempo de operación informado en la respuesta del servidor.

Ejemplos:

Obtén el operation time.

result.operation_time

Devuelve:

  • (Objeto | nil)

    El valor de operation time.

Desde:

  • 2.5.0



420
421
422
# Archivo 'lib/mongo/operation/result.rb', línea 420

def tiempo_de_operación
  first_document && first_document[OPERATION_TIME]
end

#replyProtocol::Message

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Obtenir la resposta del resultat.

Devuelve nil si no hay respuesta (es decir, la operación fue una escritura no reconocida).

Devuelve:

Desde:

  • 2.0.0



265
266
267
268
269
270
271
# Archivo 'lib/mongo/operation/result.rb', línea 265

def respuesta
  si ¿entendido?
    respuestas.primero
  else
    nulo
  end
end

#returned_countInteger

Obtenga el número de documentos devueltos por el servidor en este lote.

Devuelve:

  • (Número entero)

    El número de documentos devueltos.

Desde:

  • 2.0.0



279
280
281
282
283
284
285
# Archivo 'lib/mongo/operation/result.rb', línea 279

def recuento_devoluciones
  si ¿entendido?
    respuesta.number_returned
  else
    0
  end
end

#snapshot_timestampObject

Desde:

  • 2.0.0



461
462
463
464
465
# Archivo 'lib/mongo/operation/result.rb', línea 461

def timestamp_de_captura
  si doc = respuesta.Documentos.primero
    doc['cursor']&.[]('atClusterTime') || doc['atClusterTime']
  end
end

#exitoso?verdadero, falso

Nota:

Si no se reconoció la escritura, esto siempre devolverá verdadero.

Si el resultado fue un comando, determina si se consideró un éxito.

Ejemplos:

¿El comando fue exitoso?

result.successful?

Devuelve:

  • (verdadero,falso)

    Si el comando fue exitoso.

Desde:

  • 2.0.0



300
301
302
303
304
305
306
307
# Archivo 'lib/mongo/operation/result.rb', línea 300

def exitoso?
  return true si !¿entendido?
  si first_document.has_key?(Vale)
    ok? && parser.mensaje.¿vacío?
  else
    !query_failure? && parser.mensaje.¿vacío?
  end
end

#topology_versionTopologyVersion | nil

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve la versión de la topología.

Devuelve:

Desde:

  • 2.0.0



383
384
385
386
387
388
389
# Archivo 'lib/mongo/operation/result.rb', línea 383

def topology_version
  a menos que ¿definido?(@topology_version)
    @topology_version = first_document['topologyVersion'] &&
      TopologyVersion.Nuevo(first_document['topologyVersion'])
  end
  @topology_version
end

#validate!Result

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Nota:

Esto solo verifica errores con los guardados, ya que la autenticación se gestiona a nivel de conexión y cualquier error de autenticación se plantearía allí, antes de que se cree nunca un Resultado.

Valide el resultado comprobando si hay errores.

Ejemplos:

Validar el resultado.

result.validate!

Devuelve:

  • (Resultado)

    El resultado si se pasó la verificación.

Aumenta:

Desde:

  • 2.0.0



342
343
344
# Archivo 'lib/mongo/operation/result.rb', línea 342

def validate!
  !exitoso? ? raise_operation_failure : sí mismo
end

#error_de_escritura_preocupada?Booleano

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Si la operación falló con un error de escritura.

Devuelve:

  • (booleano)

Desde:

  • 2.0.0



457
458
459
# Archivo 'lib/mongo/operation/result.rb', línea 457

def ¿error_de_escritura?
  !!(first_document && first_document['writeConcernError'])
end

#escrituras_realizadasInteger También conocido como: n

Obtener el número de documentos escritos por el servidor.

Ejemplos:

Obtenga el número de documentos escritos.

result.written_count

Devuelve:

  • (Número entero)

    El número de documentos escritos.

Desde:

  • 2.0.0



400
401
402
403
404
405
406
# Archivo 'lib/mongo/operation/result.rb', línea 400

def written_count
  si ¿entendido?
    first_document[N] || 0
  else
    0
  end
end