Classificação: Mongoid::Criteria::Queryable::Key

Herda:
Objeto
  • Objeto
mostrar tudo
Definido em:
lib/mongoid/criteria/queryable/key.rb

Visão geral

Os objetos-chave representam especificações para a criação de expressões de query utilizando seletores do MongoDB .

As condições simples de valor-chave são convertidas diretamente em hashes de expressão pelo Mongoid sem utilizar objetos-chave. Por exemplo, a seguinte condição:

Foo.where(price: 1)

... é traduzido para a seguinte expressão simples:

{price: 1}

Condições mais complexas começariam a envolver objetos Key. Por exemplo:

Foo.where(:price.gt => 1)

... faz com que uma instância de chave seja criada da seguinte forma:

Key.new(:price, :__override__, '$gt')

Esta instância de chave utiliza operator mas não expanded nem block. A expressão de query do MongoDB correspondente é:

{price: {'$gt' => 1}}

Um exemplo ainda mais complexo é a seguinte condição:

Foo.geo_spatial(:boundary.intersects_point => [1, 10])

O processamento desta condição fará com que uma instância de chave seja criada da seguinte forma:

Key.new(:location, :__override__, '$geoIntersects', '$geometry') do |value|
{ "type" => POINT, "coordinates" => value }
end

... eventualmente produzindo a seguinte expressão de query do MongoDB :

{ limite: { '$geoIntersects' => { '$geometry' => { tipo: "Ponto" , coordenadas: [ 1, 10 ] } } } }

As instâncias de chave podem ser consideradas como procs que mapeiam um valor para a expressão de query do MongoDB necessária para obter a condição da chave, dado o valor.

Recolhimento do Resumo do atributo de instância

Recolhimento do Resumo do método de instância

Detalhes do construtor

#inicializar(nome, estratégia, operador, expandido = nil, &bloco) ➤ Chave

Instancie a nova chave.

Exemplos:

Instanciar uma chave.

Key.new("age", :__override__, "$gt")

Instancie uma chave para classificação.

Key.new(:field, :__override__, 1)

Parâmetros:

  • name (string | Símbolo)

    O nome do campo .

  • estratégia (Símbolo)

    O nome da estratégia de mesclagem.

  • operador, operador (string | Inteiro)

    O operador do MongoDB ou a direção de classificação (1 ou -1).

  • Expandido (string) (padrão para: nil)

    O operador expandido mongo .



111
112
113
114
115
116
117
118
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 111

def inicializar(name, estratégia, operador, operador, Expandido = nada, &noum: bloco ; verb: bloquear)
  a menos que operador, operador.is_a?(String) || operador, operador.is_a?(Inteiro)
    aumentar ArgumentError, "O operador deve ser uma string ou um número inteiro: #{operator.inspect}"
  end

  @name, @strategy, @operator, @expanded, @block =
    name, estratégia, operador, operador, Expandido, noum: bloco ; verb: bloquear
end

Detalhes do atributo da instância

#blockProc (somente leitura)

Retorna O bloco opcional para transformar valores.

Retorna:

  • (Proc)

    O bloco opcional para transformar valores.



73
74
75
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 73

def noum: bloco ; verb: bloquear
  @block
end

# ➤expandida string (somente leitura)

Retorna o operador de query expandida MongoDB.

Retorna:

  • (string)

    O operador de query expandida do MongoDB .



67
68
69
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 67

def Expandido
  @expanded
end

#nomestring | Símbolo (somente leitura)

Retorna O nome do campo.

Retorna:

  • (string | Símbolo)

    O nome do campo.



61
62
63
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 61

def name
  @name
end

#operadorstring (somente leitura)

Retorna o operador de query MongoDB .

Retorna:

  • (string)

    O operador de query do MongoDB.



64
65
66
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 64

def operador, operador
  @operator
end

#estrategiaSímbolo (somente leitura)

Retorna o nome da estratégia de mesclagem.

Retorna:

  • (Símbolo)

    O nome da estratégia de mesclagem.



70
71
72
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 70

def estratégia
  @strategy
end

Detalhes do método de instância

#==(outro) ➤ verdadeiro | false Também conhecido como: eql?

A chave é igual a outro objeto?

Exemplos:

A chave é igual a outra?

key == other
key.eql? other

Parâmetros:

  • Outro (Objeto)

    O objeto com o qual comparar.

Retorna:

  • (verdadeiro | falso)

    Se os objetos forem iguais.



84
85
86
87
88
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 84

def ==(Outro)
  Método false a menos que Outro.is_a?(Chave)

  name == Outro.name && operador, operador == Outro.operador, operador && Expandido == Outro.Expandido
end

#__expr_part__(object, negating = false) ➤ Hash

Obtém o seletor bruto que seria passado para mongo a partir dessa chave.

Exemplos:

Especifique o seletor bruto.

key.__expr_part__(50)

Parâmetros:

  • objeto (Objeto)

    O valor a ser incluído.

  • negando (verdadeiro | falso) (padrão para: false)

    Se a seleção deve ser negada.

Retorna:

  • (Hash)

    O seletor bruto do MongoDB.



129
130
131
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 129

def __expr_part__(objeto, negando = false)
  { name.to_s => transform_value(objeto, negando) }
end

#__sort_option__ ➤ Hash Também conhecido como: __sort_pair__

Obtenha a chave como opções de classificação de mongo bruto.

Exemplos:

Obtenha a chave como uma classificação.

key.__sort_option__

Retorna:

  • (Hash)

    O par campo/direção.



164
165
166
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 164

def __sort_option__
  { name => operador, operador }
end

#hashinteiro

Calcule o código hash de uma chave.

Retorna:

  • (Inteiro)

    O código hash da chave.



94
95
96
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 94

def hash
  [ name, operador, operador, Expandido ].hash
end

#to_s ➤ string

Converta a chave em uma string.

Exemplos:

Converta a chave em uma string.

key.to_s

Retorna:

  • (string)

    A chave como uma string.



175
176
177
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 175

def to_s
  @name.to_s
end

#transform_value(valor, negação = falso) ➤ Hash

Obtém a condição do seletor bruto que seria passada para mongo.

Exemplos:

Obtém a condição do seletor bruto.

key.transform_value(50)

Parâmetros:

  • valor (Objeto)

    O valor a ser incluído.

  • negando (verdadeiro | falso) (padrão para: false)

    Se a seleção deve ser negada.

Retorna:

  • (Hash)

    O seletor bruto do MongoDB.



142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 142

def transform_value(valor, negando = false)
  expr = se noum: bloco ; verb: bloquear
           noum: bloco ; verb: bloquear[valor]
         mais
           valor
         end

  expr = { Expandido => expr } se Expandido

  expr = { operador, operador => expr }

  expr = { '$not' => expr } se negando && operador, operador != '$not'

  expr
end