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



429
430
431
# Archivo 'lib/mongo/operation/result.rb', línea 429

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



176
177
178
179
180
181
182
183
184
185
186
187
188
# Archivo 'lib/mongo/operation/result.rb', línea 176

def cursor_id
  return 0 a menos que ¿entendido?

  si respuestas.último.respond_to?(:cursor_id)
    # Heredado: las respuestas OP_REPLY exponen el ID del cursor directamente.
    respuestas.último.cursor_id
  elsif first_document.key?(CURSOR)
    # Las respuestas de comandos OP_MSG llevan el ID del cursor en el subdocumento `cursor`.
    first_document[CURSOR][CURSOR_ID] || 0
  else
    0
  end
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



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

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



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

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



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

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,
    server_address: connection_description
  )
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



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

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



442
443
444
# Archivo 'lib/mongo/operation/result.rb', línea 442

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



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

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



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

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



412
413
414
# Archivo 'lib/mongo/operation/result.rb', línea 412

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



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

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



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

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

#snapshot_timestampObject

Desde:

  • 2.0.0



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

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



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

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



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

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



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

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



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

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



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

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