Clase: Mongo::Operation::Result
- Hereda:
-
Objeto
- Objeto
- Mongo::operación::Result
- 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).
Subclases conocidas directas
borrar::BulkResult, Insertar::BulkResult, Actualizar::BulkResult
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.
'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.
'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.
'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.
'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.
'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.
'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.
'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.
'Resultado'
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 por la que se obtuvo 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.
-
#initialize(replies, connection_description = nil, connection_global_id = nil, context: nil, connection: nil) ⇒ Resultado
constructor
privado
Inicializa un nuevo resultado.
-
#inspect ⇒ string
Obtén la inspección de formato bonito del resultado.
-
#etiquetas ⇒ arreglo
privado
Obtiene el conjunto de etiquetas de error asociadas con el resultado.
-
#namespace ⇒ Nil
privado
Obtén el namespace del cursor.
-
#ok? ⇒ true, false
Consulta el campo de confirmación del primer documento.
-
#operation_time ⇒ Object | nil
Obtén el operation time reportado en respuesta del servidor.
-
#reply ⇒ Protocol::Message
privado
Obtenir la resposta del resultat.
-
#return_count ⇒ Integer
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
Valida el resultado comprobando si hay errores.
-
#write_concern_error? ⇒ Booleano
privado
Si la operación falló debido a un error de nivel de confirmación de escritura (write concern).
-
#written_count ⇒ Integer (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 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.
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ón ⇒ Objeto (solo lectura)
149 150 151 |
# Archivo 'lib/mongo/operation/result.rb', línea 149 def Conexión @connection end |
#connection_description ⇒ Server::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.
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_id ⇒ Objeto (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.
141 142 143 |
# Archivo 'lib/mongo/operation/result.rb', línea 141 def connection_global_id @connection_global_id end |
#context ⇒ Operation::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.
147 148 149 |
# Archivo 'lib/mongo/operation/result.rb', línea 147 def context @contexto end |
#replies ⇒ Array<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.
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?
161 162 163 |
# Archivo 'lib/mongo/operation/result.rb', línea 161 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.
429 430 431 |
# Archivo 'lib/mongo/operation/result.rb', línea 429 def cluster_time first_document && ClusterTime[first_document['$clusterTime']] end |
#cursor_id ⇒ Integer
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.
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.
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 |
#documentos ⇒ Array<BSON::Document>
Obten los documentos en el resultado.
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.
231 232 233 |
# Archivo 'lib/mongo/operation/result.rb', línea 231 def cada(&bloque) Documentos.cada(&bloque) end |
#error ⇒ Error::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.
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., 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_address: connection_description ) end |
#inspect ⇒ String
Obtén la inspección de formato bonito del resultado.
244 245 246 |
# Archivo 'lib/mongo/operation/result.rb', línea 244 def inspeccionar "#<#{self.class.name}:0x#{object_id} documents=#{documents}>" end |
#labels ⇒ arreglo
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.
442 443 444 |
# Archivo 'lib/mongo/operation/result.rb', línea 442 def etiquetas @labels ||= parser.etiquetas end |
#namespace ⇒ 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.
Obtén el namespace del cursor. El método debe definirse en clases de resultados donde 'ns' esté en la respuesta del servidor.
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.
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_time ⇒ objeto | nil
Obtén el operation time reportado en respuesta del servidor.
412 413 414 |
# Archivo 'lib/mongo/operation/result.rb', línea 412 def tiempo_de_operación first_document && first_document[OPERATION_TIME] end |
#reply ⇒ Protocol::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).
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_count ⇒ Integer
Obtenga el número de documentos devueltos por el servidor en este lote.
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_timestamp ⇒ Object
453 454 455 456 457 |
# Archivo 'lib/mongo/operation/result.rb', línea 453 def return a menos que (doc = respuesta.Documentos.primero) doc['cursor']&.[]('atClusterTime') || doc['atClusterTime'] end |
#exitoso? ⇒ verdadero, falso
Si el guardado no fue reconocido, entonces esto siempre devolverá verdadero.
Si el resultado fue un comando, determina si se consideró un éxito.
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..¿vacío? else !query_failure? && parser..¿vacío? end end |
#topology_version ⇒ TopologyVersion | 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.
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.
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.
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).
449 450 451 |
# Archivo 'lib/mongo/operation/result.rb', línea 449 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.
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 |