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.
-
#¿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.
-
#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.
427 428 429 |
# Archivo 'lib/mongo/operation/result.rb', línea 427 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.
185 186 187 |
# Archivo 'lib/mongo/operation/result.rb', línea 185 def cursor_id ¿entendido? ? respuestas.último.cursor_id : 0 end |
#documentos ⇒ Array<BSON::Document>
Obten los documentos en el resultado.
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.
230 231 232 |
# Archivo 'lib/mongo/operation/result.rb', línea 230 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.
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., 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. ) 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
170 171 172 |
# Archivo 'lib/mongo/operation/result.rb', línea 170 def has_cursor_id? ¿entendido? && respuestas.último.respond_to?(:cursor_id) end |
#inspect ⇒ String
Obtén la inspección de formato bonito del resultado.
243 244 245 |
# Archivo 'lib/mongo/operation/result.rb', línea 243 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.
440 441 442 |
# Archivo 'lib/mongo/operation/result.rb', línea 440 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.
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.
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_time ⇒ objeto | nil
Obtén el operation time reportado en respuesta del servidor.
410 411 412 |
# Archivo 'lib/mongo/operation/result.rb', línea 410 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).
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_count ⇒ Integer
Obtenga el número de documentos devueltos por el servidor en este lote.
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_timestamp ⇒ Object
451 452 453 454 455 |
# Archivo 'lib/mongo/operation/result.rb', línea 451 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.
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..¿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.
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.
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.
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).
447 448 449 |
# Archivo 'lib/mongo/operation/result.rb', línea 447 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.
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 |