Clase: Mongo::Operación::Resultado

Hereda:
Objeto
  • Objeto
Mostrar todo
Ampliado por:
Reenviable
Incluye:
Enumerable
Definido en:
lib/mongo/operation/result.rb,
lib/mongo/operation/shared/result/aggregatable.rb,
lib/mongo/operation/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 sin acuse de recibo; todas las demás operaciones producen una respuesta. Esta clase proporciona un objeto sobre el que se puede operar (por ejemplo, para comprobar si una operación se ha realizado correctamente) incluso si no se ha producido una respuesta (en cuyo caso se asume que se ha realizado correctamente).

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 en el espacio de nombres

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
SIGUIENTE_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 siguiente lote de un cursor.

Desde:

  • 2.2.0

' nextBatch '.freeze
ESPACIO DE NOMBRES =

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 espacio de nombres 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
Está bien =

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

Desde:

  • 2.2.0

'resultado'.freeze

Colapso delresumen de atributos de instancia

Colapso del resumen del método de instancia

Detalles del constructor

#inicializar(respuestas, descripción_de_conexión = nula, id_global_de_conexión = nulo, contexto: nulo, conexión: nula) ⇒ Resultado

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

Inicializar 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 cable responde.

  • descripción de la conexión (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.

  • id_global_de_conexión (Entero) (predeterminado: nulo)

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

  • context (Operación::Contexto | 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, descripción de la conexión = nulo, id_global_de_conexión = 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.primera
    else
      respuesta = respuestas
    end
    a no ser 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 ]
    @descripción_de_conexión = descripción de la conexión
    @conexión_global_id = id_global_de_conexión
    @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 en el que se realizó la operación para la que es 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 descripción de la conexión
  @descripción_de_conexión
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.

Devuelve Global de la conexión en la que se realizó la operación para la cual es este resultado.

Devuelve:

  • (Objeto) -

    Global es la conexión en la que se realizó la operación para la que es este resultado.

Desde:

  • 2.0.0



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

def id_global_de_conexión
  @conexión_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 la operación (si lo hay) que estaba activo cuando se produjo este resultado.

Devuelve:

  • (Operación::Contexto | nil)

    el contexto de la operación (si lo hay) 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:

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 versiones posteriores, se confirman todas las escrituras, ya que el controlador utiliza comandos de escritura para todas las operaciones de escritura. En 2.4 y versiones anteriores, se confirma el resultado si el GLE se ha ejecutado después del comando. De lo contrario, no se especificarán respuestas. Las lecturas siempre devolverán "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 ¿admitido?
  !!@replies
end

#cluster_timeClusterTime | nil

Obtenga el tiempo del clúster informado en la respuesta del servidor.

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

Ejemplos:

Obtenga el tiempo del clúster.

result.cluster_time

Devuelve:

  • (ClusterTime | nil)

    El documento de tiempo del clúster.

Desde:

  • 2.5.0



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

def cluster_time
  primer_documento && Tiempo de clúster[primer_documento['$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.

Obtenga el identificador del cursor si se reconoce la respuesta.

Ejemplos:

Obtener el id del cursor.

result.cursor_id

Devuelve:

  • (Entero)

    El identificador del cursor.

Desde:

  • 2.0.0



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

def cursor_id
  ¿admitido? ? respuestas.última.cursor_id : 0
end

#documentosArray<BSON::Document>

Obtenga los documentos en el resultado.

Ejemplos:

Obtenga los documentos.

result.documents

Devuelve:

  • (Matriz<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 ¿admitido?
    respuestas.flat_map(Y:documentos)
  else
    []
  end
end

#cada {|Cada|... } ⇒ Enumerador

Iterar sobre los documentos en las respuestas.

Ejemplos:

Iterar sobre los documentos.

result.each do |doc|
  p doc
end

Parámetros de rendimiento:

  • Cada (BSON::Documento)

    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::Error de operación::Familia

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 sólo debe llamarse cuando el resultado no es satisfactorio.

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 ||= clase de falla de operación.Nuevo(
    parser.Mensaje,
    yo,
    código: parser.Código,
    nombre_código: parser.nombre_clave,
    error_de_escritura_de_documento: parser.error_de_escritura_de_documento_de_error_de_preocupación,
    write_concern_error_code: parser.código de error de escritura de preocupación,
    nombre_código_error_escritura_preocupación: 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.tiempo de espera,
    descripción_de_conexión: descripción de la conexión,
    documento: parser.Documento,
    mensaje_del_servidor: 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.

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?
  ¿admitido? && respuestas.última.respond_to?(:cursor_id)
end

#inspeccionarCadena

Obtenga una bonita inspección formateada del resultado.

Ejemplos:

Inspeccione el resultado.

result.inspect

Devuelve:

  • (Cadena) -

    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

#etiquetasMatriz

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:

  • (Matriz)

    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.

Obtener el espacio de nombres del cursor. El método debe estar definido en las clases de resultados donde "ns" aparece 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

Verifique 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 flotante y el servidor puede devolver
  # ok como un BSON int32, BSON int64 o un BSON doble.
  # El número 1 se puede representar exactamente en un flotante, 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)
  primer_documento[Vale] == 1
end

#operation_timeobjeto | nil

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

Ejemplos:

Obtenga el tiempo de operación.

result.operation_time

Devuelve:

  • (Objeto| nil)

    El valor del tiempo de operación.

Desde:

  • 2.5.0



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

def tiempo_de_operación
  primer_documento && primer_documento[TIEMPO DE OPERACIÓN]
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 ¿admitido?
    respuestas.primera
  else
    nulo
  end
end

#return_countEntero

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

Devuelve:

  • (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 devuelto
  Si ¿admitido?
    respuesta.número_devuelto
  else
    0
  end
end

#snapshot_timestampObjeto

Desde:

  • 2.0.0



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

def marca de tiempo de la instantánea
  Si doc = respuesta.Documentos.primera
    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 entonces determine 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 !¿admitido?
  Si primer_documento.has_key?(Vale)
    ok? && parser.Mensaje.¿vacío?
  else
    !¿Fallo de consulta? && 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 versión_de_topología
  a no ser que ¿definido?(@topology_version)
    @topology_version = primer_documento['topologyVersion'] &&
      TopologyVersion.Nuevo(primer_documento['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 escrituras, ya que la autenticación se maneja en el nivel de conexión y cualquier error de autenticación se generaría allí, antes de que se cree 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.

Aumentos:

Desde:

  • 2.0.0



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

def validate!
  !¿exitoso? ? raise_operation_failure : yo
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?
  !!(primer_documento && primer_documento['error de preocupación de escritura'])
end

#escrituras_realizadasInteger También conocido como: n

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

Ejemplos:

Obtenga el número de documentos escritos.

result.written_count

Devuelve:

  • (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 recuento_escrito
  Si ¿admitido?
    primer_documento[N] || 0
  else
    0
  end
end