Clase: Mongo::Operación::Resultado
- Hereda:
-
Objeto
- Objeto
- Mongo::Operación::Resultado
- 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).
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.
'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
- 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.
' 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.
'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
- 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.
'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.
'resultado'.freeze
Colapso delresumen de atributos de instancia
- #conexión ⇒ Objeto solo lectura
-
#descripción_de_conexión ⇒ Servidor::Descripción
solo lectura
privada
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
privada
Global es la conexión en la que se realizó la operación para la que es este resultado.
-
#context ⇒ Operation::Context | nil
solo lectura
privada
El contexto de la operación (si lo hay) que estaba activo cuando se produjo este resultado.
-
#replies ⇒ Array<Protocol::Message>
solo lectura
privada
Respuestas El protocolo de cable envuelto responde.
Colapso del resumen del método de instancia
-
#reconocido? ⇒ verdadero, falso
¿Se reconoce el resultado?
-
#cluster_time ⇒ ClusterTime | nil
Obtenga el tiempo del clúster informado en la respuesta del servidor.
-
#cursor_id ⇒ Integer
privada
Obtenga el identificador del cursor si se reconoce la respuesta.
-
#documentos ⇒ Array<BSON::Document>
Obtenga los documentos en el resultado.
-
#cada {|Cada|... } ⇒ Enumerador
Iterar sobre los documentos en las respuestas.
-
#error ⇒ Error::Error de operación::Familia
privada
La instancia de excepción (de Error::OperationFailure::Family) que se generaría durante el procesamiento de este resultado.
-
#has_cursor_id? ⇒ verdadero, falso
privada
Si el resultado contiene cursor_id.
-
#inicializar(respuestas, descripción_de_conexión = nula, id_global_de_conexión = nulo, contexto: nulo, conexión: nula) ⇒ Resultado
constructor
privada
Inicializar un nuevo resultado.
-
#inspeccionar ⇒ Cadena
Obtenga una bonita inspección formateada del resultado.
-
#etiquetas ⇒ Matriz
privada
Obtiene el conjunto de etiquetas de error asociadas con el resultado.
-
#namespace ⇒ Nil
privada
Obtener el espacio de nombres del cursor.
-
#¿ok? ⇒ verdadero, falso
Verifique 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
privada
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 entonces determine si se consideró un éxito.
-
#topology_version ⇒ TopologyVersion | nil
privada
La versión de la topología.
-
#validate! ⇒ Result
privada
Valide el resultado comprobando si hay errores.
-
#error_de_escritura_preocupada? ⇒ Booleano
privada
Si la operación falló con un error de escritura.
-
#written_count ⇒ Entero (también: #n)
Obtenga el número de documentos escritos por el servidor.
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.
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ó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 en el que se realizó la operación para la que es este resultado.
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_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.
Devuelve Global de la conexión en la que se realizó la operación para la cual es este resultado.
144 145 146 |
# Archivo 'lib/mongo/operation/result.rb', línea 144 def id_global_de_conexión @conexión_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 la operación (si lo hay) 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 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?
170 171 172 |
# Archivo 'lib/mongo/operation/result.rb', línea 170 def ¿admitido? !!@replies end |
#cluster_time ⇒ ClusterTime | 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.
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_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.
Obtenga el identificador del cursor si se reconoce la respuesta.
194 195 196 |
# Archivo 'lib/mongo/operation/result.rb', línea 194 def cursor_id ¿admitido? ? respuestas.última.cursor_id : 0 end |
#documentos ⇒ Array<BSON::Document>
Obtenga los documentos en el resultado.
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.
239 240 241 |
# Archivo 'lib/mongo/operation/result.rb', línea 239 def cada(Ybloque) Documentos.cada(Ybloque) end |
#error ⇒ Error::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.
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., 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., ) 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
179 180 181 |
# Archivo 'lib/mongo/operation/result.rb', línea 179 def has_cursor_id? ¿admitido? && respuestas.última.respond_to?(:cursor_id) end |
#inspeccionar ⇒ Cadena
Obtenga una bonita inspección formateada 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 |
#etiquetas ⇒ Matriz
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.
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.
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.
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_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 primer_documento && primer_documento[TIEMPO DE OPERACIÓN] 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 ¿admitido? respuestas.primera else nulo end end |
#return_count ⇒ Entero
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 devuelto Si ¿admitido? respuesta.número_devuelto else 0 end end |
#snapshot_timestamp ⇒ Objeto
461 462 463 464 465 |
# Archivo 'lib/mongo/operation/result.rb', línea 461 def Si doc = respuesta.Documentos.primera 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 entonces determine 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 !¿admitido? Si primer_documento.has_key?(Vale) ok? && parser..¿vacío? else !¿Fallo de consulta? && 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 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.
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.
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.
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_realizadas ⇒ Integer También conocido como: n
Obtenga 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 recuento_escrito Si ¿admitido? primer_documento[N] || 0 else 0 end end |