Clase: Mongo::Protocolo::Consulta

Hereda:
Mensaje
  • Objeto
Mostrar todo
Incluye:
supervisión::evento::Secure
Definido en:
lib/mongo/protocolo/consulta.rb

Overview

Mensaje de consulta del protocolo MongoDB Wire.

Este es un mensaje de solicitud de cliente que se envía al servidor para recuperar documentos que coinciden con la consulta proporcionada.

Los usuarios también pueden proporcionar opciones adicionales, como una proyección, para seleccionar un subconjunto de campos, un número para omitir o un límite en la cantidad de documentos devueltos.

Hay diferentes banderas que pueden utilizarse para ajustar los parámetros del cursor o la coherencia e integridad deseadas de los resultados.

Definido en el espacio de nombres

Clases: Convertidor ascendente

Resumen constante

Constantes incluidas desde Monitoring::Event::Secure

Monitoreo::Evento::Seguro::COMANDOS REDACTADOS

Constantes heredadas de Message

Mensaje::TAMAÑO_DE_LOTE, Mensaje::COLECCIÓN, Mensaje::LÍMITE, Mensaje::TAMAÑO_MÁXIMO_DE_MENSAJE, Mensaje::ORDENADO, Mensaje::Q

Resumen de atributos de instancia

Atributos heredados de Message

#id_de_solicitud

Colapso del resumen del método de instancia

Métodos incluidos en Monitoring::Event::Secure

#compression_allowed?, #redacted, #sensitive?

Métodos heredados de Message

#==, deserializar, deserializar_matriz, deserializar_campo, deserializar_encabezado, campo, campos, #hash, #tal vez_agregar_api_de_servidor, #tal_vez_descifrar, #tal_vez_cifrar, #tal_vez_inflar, #número_devuelto, #establecer_id_de_solicitud

Métodos incluidos de Id

incluido

Detalles del constructor

#inicializar(base de datos, colección, selector, opciones = {}) ⇒ Consulta

Crea un nuevo mensaje de consulta

Ejemplos:

Encuentra todos los usuarios llamados Tyler.

Query.new('xgen', 'users', {:name => 'Tyler'})

Encuentra todos los usuarios llamados Tyler omitiendo 5 y devolviendo 10.

Query.new('xgen', 'users', {:name => 'Tyler'}, :skip => 5,
                                               :limit => 10)

Encuentra todos los usuarios con el bit secundarioOk establecido

Query.new('xgen', 'users', {:name => 'Tyler'}, :flags => [:secondary_ok])

Encuentra todos los ID de usuario.

Query.new('xgen', 'users', {}, :fields => {:id => 1})

Parámetros:

  • database (Cadena,Símbolo)

    La base de datos a consultar.

  • Colección (Cadena,Símbolo)

    La colección a consultar.

  • selector (Hash)

    El selector de consultas.

  • opciones (Hash) (predeterminado: {})

    Las opciones de consulta adicionales.

Opciones Hash(opciones):

  • :flags (Matriz <Símbolo>)

    Bits de bandera. Los valores admitidos actualmente son: await_data, :exhaust, :no_cursor_timeout, :oplog_replay, :partial, :secondary_ok y :tailable_cursor.

  • :limit (Entero)

    El número de documentos a devolver.

  • :proyecto (Hash)

    La proyección.

  • :saltar (Entero)

    El número de documentos a omitir.



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# Archivo 'lib/mongo/protocol/query.rb', línea 64

def inicializar(database, Colección, selector, opciones = {})
  @database = database
  @espacio de nombres = "#{basede datos}.#{ colección }"
  Si selector.nil?
    propagar ArgumentError, 'Elselector no puede ser nulo'
  end
  @selector = selector
  @opciones = opciones
  @proyecto = opciones[:proyecto]
  @limit = determine_limit
  @skip = opciones[:saltar]  || 0
  @flags = opciones[:flags] || []
  @convertidor ascendente = Convertidor ascendente.Nuevo(
    Colección,
    BSON::Documento.Nuevo(selector),
    BSON::Documento.Nuevo(opciones),
    flags,
  )
  Super
end

Detalles del método de instancia

#perhaps_compress(compresor, zlib_compression_level = nil) ⇒ Mensaje

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

Comprime el mensaje si el comando enviado lo permite. De lo contrario, devuelve "self".

Parámetros:

  • compresor (Cadena,Símbolo)

    El compresor a utilizar.

  • zlib_compression_level (Entero) (predeterminado: nulo)

    El nivel de compresión zlib a utilizar.

Devuelve:

  • (Mensaje)

    Un mensaje de Protocolo::Comprimido o propio, dependiendo de si este mensaje se puede comprimir.

Desde:

  • 2.5.0



125
126
127
# Archivo 'lib/mongo/protocol/query.rb', línea 125

def tal vez_comprimir(compresor, zlib_compression_level = nulo)
  comprimir_si_es_posible(selector.claves.primera, compresor, zlib_compression_level)
end

#carga útilBSON::Documento

Devuelve la carga útil del evento para su monitoreo.

Ejemplos:

Devuelve la carga útil del evento.

message.payload

Devuelve:

  • (BSON::Documento)

    La carga útil del evento.

Desde:

  • 2.1.0



93
94
95
96
97
98
99
100
# Archivo 'lib/mongo/protocol/query.rb', línea 93

def carga útil
  BSON::Documento.Nuevo(
    nombre_del_comando: convertidor ascendente.nombre_del_comando,
    nombre_de_la_base_de_datos: @database,
    dominio: convertidor ascendente.Comando,
    id_de_solicitud: id de solicitud
  )
end

#¿respondible?verdadero

Los mensajes de consulta requieren respuestas de la base de datos.

Ejemplos:

¿El mensaje requiere una respuesta?

message.replyable?

Devuelve:

  • (verdadero) -

    Siempre cierto para las consultas.

Desde:

  • 2.0.0



110
111
112
# Archivo 'lib/mongo/protocol/query.rb', línea 110

def ¿respondible?
  true
end

#serializar(buffer = BSON::ByteBuffer.new, tamaño máximo de bson = nulo, sobrecarga de bson = nulo) ⇒ BSON::ByteBuffer

Serializa el mensaje en bytes que pueden enviarse por cable.

Parámetros:

  • buffer (BSON::Búfer de bytes) (predeterminado: BSON::ByteBuffer.new)

    donde debe insertarse el mensaje.

  • tamaño máximo de bson (Entero) (predeterminado: nulo)

    El tamaño máximo del objeto bson.

Devuelve:

  • (BSON::ByteBuffer)

    buffer que contiene el mensaje serializado.



135
136
137
138
139
# Archivo 'lib/mongo/protocol/query.rb', línea 135

def fabricar en serie(buffer = BSON::Búfer de bytes.Nuevo, tamaño máximo de bson = nulo, bson_overhead = nulo)
  ¡validar_tamaño_del_documento!(tamaño máximo de bson)

  Super
end