Clase: Mongo::Operation::Result

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

Overview

Contenedor de resultados para respuestas del protocolo de conexión.

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

Definido bajo Namespace

Modules: Agregable

Resumen de constantes colapsar

CURSOR =

Esta constante es parte de una API privada. Deberías evitar usar esta constante si es posible, ya que podría ser retirada o cambiada en el futuro.

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

Desde:

  • 2.2.0

'cursor'
CURSOR_ID =

Esta constante es parte de una API privada. Deberías evitar usar esta constante si es posible, ya que podría ser retirada o cambiada en el futuro.

El campo id de cursor en el documento de cursor.

Desde:

  • 2.2.0

'ID'
PRIMER_LOTE =

Esta constante es parte de una API privada. Deberías evitar usar esta constante si es posible, ya que podría ser retirada o cambiada en el futuro.

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

Desde:

  • 2.2.0

'firstBatch'
NEXT_BATCH =

Esta constante es parte de una API privada. Deberías evitar usar esta constante si es posible, ya que podría ser retirada o cambiada en el futuro.

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

Desde:

  • 2.2.0

'nextBatch'
namespace =

Esta constante es parte de una API privada. Deberías evitar usar esta constante si es posible, ya que podría ser retirada o cambiada en el futuro.

El campo namespace en el documento del cursor.

Desde:

  • 2.2.0

'ns'
N =

Esta constante es parte de una API privada. Deberías evitar usar esta constante si es posible, ya que podría ser retirada o cambiada en el futuro.

El número de documentos actualizados en la guardar.

Desde:

  • 2.0.0

'n'
Aceptar =

Esta constante es parte de una API privada. Deberías evitar usar esta constante si es posible, ya que podría ser retirada o cambiada en el futuro.

El campo de estado ok en el resultado.

Desde:

  • 2.0.0

'Ok'
RESULTADO =

Esta constante es parte de una API privada. Deberías evitar usar esta constante si es posible, ya que podría ser retirada o cambiada en el futuro.

La constante del campo resultado.

Desde:

  • 2.2.0

'Resultado'

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 es parte de una API privada. Se debe evitar el uso de este método 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) (valor por defecto: nil)

    Descripción del servidor que realizó la operación para la que se obtuvo este resultado. Se permite que este parámetro sea nulo para mantener compatibilidad con la librería existente mongo_kerberos, pero siempre debe ser no nulo en el driver propiamente dicho.

  • connection_global_id (Integer) (valor por defecto: nil)

    Id global de la conexión en la que se realizó la operación para la que se obtuvo este resultado.

  • context (Operation::Context | nil) (valor por defecto: nil)

    el contexto que estaba activo cuando se produjo este resultado.

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
# Archivo 'lib/mongo/operation/result.rb', línea 104

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

  return a menos que respuestas

  si respuestas.is_a?(Arreglo)
    propagar ArgumentError, "Sólo se admite una (o ninguna) respuesta, teniendo en cuenta #{respuestas.longitud}" si respuestas.longitud != 1

    respuesta = respuestas.primero
  else
    respuesta = respuestas
  end
  a menos que respuesta.is_a?(protocolo::Mensaje)
    propagar ArgumentError, "El argumento 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
  @connection = Conexión
end

Detalles de atributo de instancias

#conexiónObjeto (solo lectura)

Desde:

  • 2.0.0



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

def Conexión
  @connection
end

#connection_descriptionServer::Description (solo lectura)

Este método es parte de una API privada. Se debe evitar el uso de este método 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 por la que se obtuvo este resultado.

Desde:

  • 2.0.0



135
136
137
# Archivo 'lib/mongo/operation/result.rb', línea 135

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 es parte de una API privada. Se debe evitar el uso de este método 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



141
142
143
# Archivo 'lib/mongo/operation/result.rb', línea 141

def connection_global_id
  @connection_global_id
end

#contextOperation::Context | nil (solo lectura)

Este método es parte de una API privada. Se debe evitar el uso de este método 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



147
148
149
# Archivo 'lib/mongo/operation/result.rb', línea 147

def context
  @contexto
end

#repliesArray<Protocol::Message> (readonly)

Este método es parte de una API privada. Se debe evitar el uso de este método 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



129
130
131
# Archivo 'lib/mongo/operation/result.rb', línea 129

def respuestas
  @replies
end

Detalles del método de instancia

#¿reconocido?verdadero, falso

¿Se reconoce el resultado?

Devuelve:

  • (true, false)

    Si se reconoce el resultado.

Desde:

  • 2.0.0



161
162
163
# Archivo 'lib/mongo/operation/result.rb', línea 161

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



427
428
429
# Archivo 'lib/mongo/operation/result.rb', línea 427

def cluster_time
  first_document && ClusterTime[first_document['$clusterTime']]
end

#cursor_idInteger

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Nota:

Los ID de cursor de 0 indican que no hay un 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



185
186
187
# Archivo 'lib/mongo/operation/result.rb', línea 185

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

#documentosArray<BSON::Document>

Obten los documentos en el resultado.

Ejemplos:

Obtén los documentos.

result.documents

Devuelve:

  • (arreglo<BSON::Document>)

    Los documentos.

Desde:

  • 2.0.0



209
210
211
212
213
214
215
# Archivo 'lib/mongo/operation/result.rb', línea 209

def Documentos
  si ¿entendido?
    respuestas.flat_map(&documento)
  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



230
231
232
# Archivo 'lib/mongo/operation/result.rb', línea 230

def cada(&bloque)
  Documentos.cada(&bloque)
end

#errorError::OperationFailure::Family

Este método es parte de una API privada. Se debe evitar el uso de este método 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:

  • (Error::OperationFailure::Family)

    La excepción.

Desde:

  • 2.0.0



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

def Error
  @error ||= operation_failure_class.Nuevo(
    parser.mensaje,
    sí mismo,
    código: parser.Código,
    code_name: parser.code_name,
    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,
    write_concern_error_labels: parser.write_concern_error_labels,
    etiquetas: parser.etiquetas,
    wtimeout: parser.wtimeout,
    connection_description: connection_description,
    documento: parser.Documento,
    server_message: parser.server_message
  )
end

#has_cursor_id?true, false

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Indica si el resultado contiene cursor_id

Devuelve:

  • (true, false)

    Si el resultado contiene cursor_id.

Desde:

  • 2.0.0



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

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



243
244
245
# Archivo 'lib/mongo/operation/result.rb', línea 243

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

#labelsarreglo

Este método es parte de una API privada. Se debe evitar el uso de este método 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)

    labels El conjunto de etiquetas.

Desde:

  • 2.7.0



440
441
442
# Archivo 'lib/mongo/operation/result.rb', línea 440

def etiquetas
  @labels ||= parser.etiquetas
end

#namespaceNil

Este método es parte de una API privada. Se debe evitar el uso de este método 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 clases de resultados donde 'ns' esté en la respuesta del servidor.

Devuelve:

  • (Nil)

Desde:

  • 2.0.0



196
197
198
# Archivo 'lib/mongo/operation/result.rb', línea 196

def namespace
  nulo
end

#¿ok?verdadero, falso

Consulta el campo de confirmación del primer documento.

Ejemplos:

Comprueba el campo ok.

result.ok?

Devuelve:

  • (true, false)

    Si el comando devolvió ok.

Desde:

  • 2.1.0



308
309
310
311
312
313
314
315
# Archivo 'lib/mongo/operation/result.rb', línea 308

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 va a funcionar correctamente todo el tiempo
  # (hasta que el servidor devuelva algo diferente de 1 para el éxito, es decir)
  first_document[OK] == 1
end

#operation_timeobjeto | nil

Obtén el operation time reportado en respuesta del servidor.

Ejemplos:

Obtén el operation time.

result.operation_time

Devuelve:

  • (Objeto | nil)

    El valor de operation time.

Desde:

  • 2.5.0



410
411
412
# Archivo 'lib/mongo/operation/result.rb', línea 410

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

#replyProtocol::Message

Este método es parte de una API privada. Se debe evitar el uso de este método 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 un guardado no reconocido).

Devuelve:

Desde:

  • 2.0.0



256
257
258
259
260
# Archivo 'lib/mongo/operation/result.rb', línea 256

def respuesta
  return a menos que ¿entendido?

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



268
269
270
271
272
273
274
# Archivo 'lib/mongo/operation/result.rb', línea 268

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

#snapshot_timestampObject

Desde:

  • 2.0.0



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

def timestamp_de_captura
  return a menos que doc = respuesta.Documentos.primero

  doc['cursor']&.[]('atClusterTime') || doc['atClusterTime']
end

#exitoso?verdadero, falso

Nota:

Si el guardado no fue reconocido, entonces esto siempre devolverá verdadero.

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

Ejemplos:

¿El comando fue exitoso?

result.successful?

Devuelve:

  • (true, false)

    Si el comando fue exitoso.

Desde:

  • 2.0.0



289
290
291
292
293
294
295
296
297
# Archivo 'lib/mongo/operation/result.rb', línea 289

def exitoso?
  return true a menos que ¿entendido?

  si first_document.has_key?(OK)
    ok? && parser.mensaje.¿vacío?
  else
    !query_failure? && parser.mensaje.¿vacío?
  end
end

#topology_versionTopologyVersion | nil

Este método es parte de una API privada. Se debe evitar el uso de este método 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



373
374
375
376
377
378
379
# Archivo 'lib/mongo/operation/result.rb', línea 373

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 es parte de una API privada. Se debe evitar el uso de este método 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.

Valida el resultado comprobando si hay errores.

Ejemplos:

Valida el resultado.

result.validate!

Devuelve:

  • (Resultado)

    El resultado si la verificación fue aprobada.

Aumenta:

  • (Error::OperationFailure::Family)

    Si hay un error en el resultado.

Desde:

  • 2.0.0



332
333
334
# Archivo 'lib/mongo/operation/result.rb', línea 332

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

#¿write_concern_error?Booleano

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Si la operación falló debido a un error de nivel de confirmación de escritura (write concern).

Devuelve:

  • (booleano)

Desde:

  • 2.0.0



447
448
449
# Archivo 'lib/mongo/operation/result.rb', línea 447

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:

Obtén el número de documentos escritos.

result.written_count

Devuelve:

  • (Número entero)

    El número de documentos escritos.

Desde:

  • 2.0.0



390
391
392
393
394
395
396
# Archivo 'lib/mongo/operation/result.rb', línea 390

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