Clase: Mongo::Protocol::Query

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

Overview

Mensaje de query del protocolo de conexión de MongoDB.

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

clase: Convertidor ascendente

Resumen constante

Constantes incluidas de supervisión::evento::Secure

Supervisión::Evento::Seguro::COMANDOS_REDACTADOS

Constantes heredadas de Mensaje

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

Constantes incluidas de Serializadores

Serializers::HEADER_PACK, Serializers::INT32_PACK, Serializers::INT64_PACK, Serializers::NULL, Serializers::ZERO

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 query

Ejemplos:

Encontrar todos los usuarios llamados Tyler.

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

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

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

Encontrar todos los usuarios con el bit secondaryOk activado

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 (String, Símbolo)

    La base de datos que se debe query.

  • Colección (String, Símbolo)

    La colección a query.

  • selector (encriptada)

    El selector de query.

  • opciones (encriptada) (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 (Integer)

    El número de documentos a devolver.

  • Proyecto (encriptada)

    La proyección.

  • Omitir (Integer)

    El número de documentos que se deben omitir.

Aumenta:

  • (ArgumentError)


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

def inicializar(database, Colección, selector, opciones = {})
  @database = database
  @namespace = "#{base de datos}.#{colección}"
  propagar ArgumentError, 'El selector no puede estar vacío' si selector.nil?

  @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 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.

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

Parámetros:

  • compresor (String, Símbolo)

    El compresor a utilizar.

  • zlib_compression_level (Integer) (valor por defecto: nil)

    El nivel de compresión de zlib que se debe usar.

Devuelve:

  • (Mensaje)

    Un mensaje Protocol::Compressed o self, dependiendo de si este mensaje puede comprimirse.

Desde:

  • 2.5.0



122
123
124
# Archivo 'lib/mongo/protocolo/query.rb', línea 122

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



90
91
92
93
94
95
96
97
# Archivo 'lib/mongo/protocolo/query.rb', línea 90

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



107
108
109
# Archivo 'lib/mongo/protocolo/query.rb', línea 107

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_bson (Integer) (valor por defecto: nil)

    El tamaño máximo del objeto BSON.

Devuelve:

  • (BSON::ByteBuffer)

    buffer que contiene el mensaje serializado.



132
133
134
135
136
# Archivo 'lib/mongo/protocolo/query.rb', línea 132

def serializar(buffer = BSON::ByteBuffer.Nuevo, tamaño_máximo_bson = nulo, bson_overhead = nulo)
  validate_document_size! (validate_document_size!)(tamaño_máximo_bson)

  super
end