Clase: Mongo::Protocolo::Consulta

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

Overview

Mensaje de consulta del protocolo MongoDB Wire.

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

Los usuarios también pueden proporcionar opciones adicionales, como una proyección para seleccionar un subconjunto de los campos, un número para omitir o un límite en el número 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 bajo Namespace

Clases: Convertidor ascendente

Resumen constante

Constantes incluidas desde Monitoring::Event::Secure

Monitoreo::Evento::Seguro::COMANDOS REDACTADOS

Constantes heredadas de Message

Message::BATCH_SIZE, Message::colección, Message::LIMIT, Message::MAX_MESSAGE_SIZE, Message::ORDERED, Message::Q

Resumen del atributo de la instancia

Atributos heredados de Mensaje

#request_id

Resumen del método de instancia colapsar

Métodos incluidos de supervisión::evento::Secure

#compression_allowed?, #redacted, #sensitive?

Métodos heredados de Mensaje

#==, deserializar, deserializar_array, campo_deserializar, deserializar_encabezado, campo, campos, #hash, #quizás_agregar_server_api, #quizás_descifrar, #quizás_cifrar, #quizás_inflar, #número_devuelto, #establecer_id_solicitud

Métodos incluidos de Id

incluido

Detalles del constructor

#initialize(database, collection, selector, options = {}) ⇒ query

Crea un nuevo mensaje de consulta

Ejemplos:

Encontrar 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 que se debe query.

  • Colección (Cadena,Símbolo)

    La colección a consultar.

  • selector (encriptada)

    El selector de query.

  • opciones (Hash) (por defecto: {})

    Las opciones de query adicionales.

Opciones Hash (options):

  • :flags (arreglo<Symbol>)

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

  • :limit (Entero)

    El número de documentos a devolver.

  • Proyecto (Hash)

    La proyección.

  • Omitir (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
  @namespace = "#{base de datos}.#{colección}"
  si selector.nil?
    propagar ArgumentError, 'Elselector no puede ser nulo'
  end
  @selector = selector
  @options = opciones
  @proyecto = opciones[Proyecto]
  @limit = determine_limit
  @skip = opciones[Omitir]  || 0
  @flags = opciones[:flags] || []
  @upconverter = Convertidor ascendente.Nuevo(
    Colección,
    BSON::Documento.Nuevo(selector),
    BSON::Documento.Nuevo(opciones),
    flags,
  )
  super
end

Detalles del método de instancia

#maybe_compress(compressor, 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.

Comprima el mensaje si el comando que se envía permite la compresión. En caso contrario, devuelve uno mismo.

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 maybe_compress(compresor, zlib_compression_level = nulo)
  compress_if_possible(selector.claves.primero, compresor, zlib_compression_level)
end

#carga útilBSON::Document

Devuelve la carga útil del evento para su supervisión.

Ejemplos:

Devuelve la carga útil del evento.

message.payload

Devuelve:

  • (BSON::Document)

    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 payload
  BSON::Documento.Nuevo(
    command_name: convertidor ascendente.nombre_del_comando,
    base_de_datos_nombre: @database,
    comando: convertidor ascendente.Comando,
    request_id: id de solicitud
  )
end

#replyable?true

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

Ejemplos:

¿El mensaje requiere una respuesta?

message.replyable?

Devuelve:

  • (cierto)

    Siempre verdadero para las consultas.

Desde:

  • 2.0.0



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

def ¿respondible?
  true
end

#serializa(buffer = BSON::ByteBuffer.new, max_bson_size = nil, bson_overhead = nil) ⇒ BSON::ByteBuffer

Serializa el mensaje en bytes que pueden ser enviados a través del cable.

Parámetros:

  • buffer (BSON::ByteBuffer) (por defecto: BSON::ByteBuffer.new)

    donde se debe insertar 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 serializar(buffer = BSON::ByteBuffer.Nuevo, tamaño máximo de bson = nulo, bson_overhead = nulo)
  validate_document_size! (validate_document_size!)(tamaño máximo de bson)

  super
end