Clase: Mongo::Operation::Result
- Hereda:
-
Objeto
- Objeto
- Mongo::Operación::Resultado
- 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).
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.
'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.
'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.
'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.
'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.
'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.
'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.
'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.
'resultado'.freeze
Resumen de atributos de la instancia colapsar
- #conexión ⇒ Objeto Solo lectura
-
#connection_descripción ⇒ servidor::descripción
Solo lectura
privado
Descripción del servidor en el que se realizó la operación para la que está destinado este resultado.
-
#connection_global_id ⇒ Objeto
Solo lectura
privado
Global se refiere a la conexión en la que se realizó la operación para la que se obtuvo este resultado.
-
#context ⇒ Operation::Context | nil
Solo lectura
privado
El contexto de operación (si lo hay) que estaba activo cuando se produjo este resultado.
-
#replies ⇒ Array<Protocol::Message>
Solo lectura
privado
Respuestas El protocolo de conexión envuelto responde.
Resumen del método de instancia colapsar
-
#¿Reconocido? ⇒ true, false
¿Se reconoce el resultado?.
-
#cluster_time ⇒ ClusterTime | nil
Obtén la hora del clúster informada en la respuesta del servidor.
-
#cursor_id ⇒ Integer
privado
Obten la ID de cursor si la respuesta está reconocida.
-
#documentos ⇒ Array<BSON::Document>
Obten los documentos en el resultado.
-
#each {|Each| ... } ⇒ Enumerator
Itera sobre los documentos en las respuestas.
-
#error ⇒ Error::OperationFailure::Family
privado
La instancia de excepción (de Error::OperationFailure::Family) que se generaría durante el procesamiento de este resultado.
-
#has_cursor_id? ⇒ verdadero, falso
privado
Si el resultado contiene cursor_id.
-
#initialize(replies, connection_description = nil, connection_global_id = nil, context: nil, connection: nil) ⇒ Resultado
constructor
privado
Inicializa un nuevo resultado.
-
#inspeccionar ⇒ Cadena
Obtén la inspección de formato bonito del resultado.
-
#etiquetas ⇒ Matriz
privado
Obtiene el conjunto de etiquetas de error asociadas con el resultado.
-
#namespace ⇒ Nil
privado
Obtén el namespace del cursor.
-
#ok? ⇒ true, false
Revisa el campo ok del primer documento.
-
#tiempo_de_operación ⇒ Objeto | nil
Obtenga el tiempo de operación informado en la respuesta del servidor.
-
#reply ⇒ Protocol::Message
privado
Obtenir la resposta del resultat.
-
#return_count ⇒ Entero
Obtenga el número de documentos devueltos por el servidor en este lote.
- #snapshot_timestamp ⇒ Objeto
-
#¿exitoso? ⇒ verdadero, falso
Si el resultado fue un comando, determina si se consideró un éxito.
-
#topology_version ⇒ TopologyVersion | nil
privado
La versión de la topología.
-
#validate! ⇒ Result
privado
Valide el resultado comprobando si hay errores.
-
#write_concern_error? ⇒ Booleano
privado
Si la operación falló con un error de escritura.
-
#written_count ⇒ Entero (también: #n)
Obtener el número de documentos escritos por el servidor.
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.
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ón ⇒ Objeto (solo lectura)
152 153 154 |
# Archivo 'lib/mongo/operation/result.rb', línea 152 def Conexión @conexión end |
#connection_description ⇒ Server::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.
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_id ⇒ Objeto (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.
144 145 146 |
# Archivo 'lib/mongo/operation/result.rb', línea 144 def connection_global_id @connection_global_id end |
#contexto ⇒ Operació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.
150 151 152 |
# Archivo 'lib/mongo/operation/result.rb', línea 150 def context @contexto end |
#replies ⇒ Array<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.
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
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?
170 171 172 |
# Archivo 'lib/mongo/operation/result.rb', línea 170 def ¿entendido? !!@replies end |
#cluster_time ⇒ ClusterTime | 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.
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_id ⇒ Integer
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
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.
194 195 196 |
# Archivo 'lib/mongo/operation/result.rb', línea 194 def cursor_id ¿entendido? ? respuestas.último.cursor_id : 0 end |
#documentos ⇒ Array<BSON::Document>
Obten los documentos en el resultado.
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.
239 240 241 |
# Archivo 'lib/mongo/operation/result.rb', línea 239 def cada(Ybloque) Documentos.cada(Ybloque) end |
#error ⇒ Error::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.
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., 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., ) 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
179 180 181 |
# Archivo 'lib/mongo/operation/result.rb', línea 179 def has_cursor_id? ¿entendido? && respuestas.último.respond_to?(:cursor_id) end |
#inspect ⇒ String
Obtén la inspección de formato bonito del resultado.
252 253 254 |
# Archivo 'lib/mongo/operation/result.rb', línea 252 def inspeccionar "#<#{self.class.name}: 0x#{object_id} documentos=#{documentos}>" end |
#labels ⇒ arreglo
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.
450 451 452 |
# Archivo 'lib/mongo/operation/result.rb', línea 450 def etiquetas @labels ||= parser.etiquetas end |
#namespace ⇒ 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.
Obtén el namespace del cursor. El método debe definirse en las clases de resultados donde ‘ns’ esté en la respuesta del servidor.
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.
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_time ⇒ objeto | nil
Obtenga el tiempo de operación informado en la respuesta del servidor.
420 421 422 |
# Archivo 'lib/mongo/operation/result.rb', línea 420 def tiempo_de_operación first_document && first_document[OPERATION_TIME] end |
#reply ⇒ Protocol::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).
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_count ⇒ Integer
Obtenga el número de documentos devueltos por el servidor en este lote.
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_timestamp ⇒ Object
461 462 463 464 465 |
# Archivo 'lib/mongo/operation/result.rb', línea 461 def si doc = respuesta.Documentos.primero doc['cursor']&.[]('atClusterTime') || doc['atClusterTime'] end end |
#exitoso? ⇒ verdadero, falso
Si no se reconoció la escritura, esto siempre devolverá verdadero.
Si el resultado fue un comando, determina si se consideró un éxito.
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..¿vacío? else !query_failure? && parser..¿vacío? end end |
#topology_version ⇒ TopologyVersion | 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.
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.
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.
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.
457 458 459 |
# Archivo 'lib/mongo/operation/result.rb', línea 457 def ¿error_de_escritura? !!(first_document && first_document['writeConcernError']) end |
#escrituras_realizadas ⇒ Integer También conocido como: n
Obtener el número de documentos escritos por el servidor.
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 |