Classe: Mongo::Protocol::Query

Herda:
mensagem
  • Objeto
mostrar tudo
Inclui:
Monitoramento::Evento::Seguro
Definido em:
build/ruby-driver-v2.19/lib/mongo/protocol/query.rb

Visão geral

Mensagem de query do protocolo de fio do MongoDB .

Esta é uma mensagem de solicitação do cliente que é enviada ao servidor para recuperar os documentos correspondentes à query fornecida.

Os usuários também podem fornecer opções adicionais, como uma projeção, para selecionar um subconjunto dos campos, um número a ser ignorado ou um limite no número de documentos retornados.

Há uma variedade de sinalizadores que podem ser usados para ajustar os parâmetros do cursor ou a consistência e integridade desejadas dos resultados.

Definido sob namespace

Classes: Upconverter

Resumo constante

Constantes incluídas no Monitoring::Event::Secure

Monitoramento::Evento::Secure::REDACTED_COMMANDS

Constantes herdadas de Mensagem

Mensagem::BATCH_SIZE, Mensagem::COLLECTION, Mensagem::LIMIT, Mensagem::MAX_MSSAGE_SIZE, Mensagem::ORDERED , Mensagem::Q

Resumo do atributo de instância

Atributos herdados de Mensagem

#request_id

Recolhimento do Resumo do método de instância

Métodos incluídos do Monitoring::Event::Secure

#compression_allowed?, #editado, #sensitive?

Métodos herdados de Mensagem

.

Métodos incluídos do ID

incluído

Detalhes do construtor

#initialize(banco de dados, collection, selector, options = {}) ➤ Query

Cria uma nova mensagem de query

Exemplos:

Encontre todos os usuários chamados Atlas.

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

Encontre todos os usuários chamados Atlas pulando 5 e retornando 10.

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

Encontre todos os usuários com o conjunto de bits secondaryOk

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

Encontre todos os IDs de usuário.

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

Parâmetros:

  • database (string, símbolo)

    O banco de dados de dados a ser consultado.

  • collection (string, símbolo)

    A collection a ser consultada.

  • seletor (Hash)

    O seletor de query.

  • opções (Hash) (padrão para: {})

    As opções de query adicionais.

Hash de opções (opções):

  • : flags (Array <Símbolo>)

    Os bits da bandeira. Os valores atualmente suportados são :await_data, :exhaust, :no_cursor_timeout, :oplog_replay, :partial, :secondary_ok, :tailable_cursor.

  • :limit (Inteiro)

    O número de documentos a retornar.

  • : projeto (Hash)

    A projeção.

  • :skip (Inteiro)

    O número de documentos a ignorar.



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'build/ruby-driver-v2.19/lib/mongo/protocol/query.rb', linha 64

def inicializar(database, collection, seletor, opções = {})
  @database = database
  @namespace = "#{database}.#{collection}"
  se seletor.nada?
    aumentar ArgumentError, ' Oseletor não pode ser nulo'
  end
  @selector = seletor
  @opções = opções
  @ projeto = opções[: projeto]
  @limit = determinar_limit
  @skip = opções[:skip]  || 0
  @flags = opções[: flags] || []
  @upconverter = Upconverter.Novo(
    collection,
    BSON::Documento.Novo(seletor),
    BSON::Documento.Novo(opções),
    flags,
  )
  super
end

Detalhes do método de instância

#may_compress(compressor, zlib_compression_level = nil) ➤ Mensagem

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Compacte a mensagem se o comando que está sendo enviado permitir a compressão. Caso contrário, retorna auto.

Parâmetros:

  • compressor, compressor (string, símbolo)

    O compressor a ser usado.

  • zlib_compression_level (Inteiro) (padrão para: nil)

    O nível de compressão zlib a ser usado.

Retorna:

  • (Mensagem)

    Uma mensagem de Protocolo::Comprimida ou auto, dependendo se esta mensagem pode ser comprimida.

Desde:

  • 2.5.0



125
126
127
# File 'build/ruby-driver-v2.19/lib/mongo/protocol/query.rb', linha 125

def talvez_compress(compressor, compressor, zlib_compression_level = nada)
  compressor_if_possível(seletor.keys.primeiro, compressor, compressor, zlib_compression_level)
end

#payloadBSON::Document

Retorne a carga útil do evento para monitoramento.

Exemplos:

Retorne a carga útil do evento.

message.payload

Retorna:

  • (BSON::Document)

    A carga útil do evento.

Desde:

  • 2.1.0



93
94
95
96
97
98
99
100
# File 'build/ruby-driver-v2.19/lib/mongo/protocol/query.rb', linha 93

def Carga útil
  BSON::Documento.Novo(
    command_name: upconverter.command_name,
    database_name: @database,
    comando: upconverter.comando,
    request_id: request_id
  )
end

#respondível?verdadeiro

As mensagens de query exigem respostas do banco de banco de dados.

Exemplos:

A mensagem exige uma resposta?

message.replyable?

Retorna:

  • (verdadeiro)

    Sempre verdadeiro para queries.

Desde:

  • 2.0.0



110
111
112
# File 'build/ruby-driver-v2.19/lib/mongo/protocol/query.rb', linha 110

def respondível?
  true
end

#serialize(buffer = BSON::ByteBuffer.new, max_bson_size = nil, bson_overhead = nil) ➤ BSON::ByteBuffer

Serializa a mensagem em bytes que podem ser enviados na transferência.

Parâmetros:

  • buffer (BSON::ByteBuffer) (padrão para: BSON::ByteBuffer.new)

    onde a mensagem deve ser inserida.

  • max_bson_size (Inteiro) (padrão para: nil)

    O tamanho máximo do objeto BSON .

Retorna:

  • (BSON::ByteBuffer)

    buffer contendo a mensagem serializada.



135
136
137
138
139
# File 'build/ruby-driver-v2.19/lib/mongo/protocol/query.rb', linha 135

def serializar(buffer = BSON::ByteBuffer.Novo, max_bson_size = nada, bson_overhead = nada)
  validate_document_size!(max_bson_size)

  super
end