Classificação: Mongoid::Criteria::Queryable::Key
- Herda:
-
Objeto
- Objeto
- Mongoid::Criteria::Queryable::Key
- 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 :
{
boundary: {
'$geoIntersects' => {
'$geometry' => {
type: "Point" ,
coordinates: [ 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
-
#block ⇒ Proc
Somente leitura
O bloco opcional para transformar valores.
-
# ➤expandida string
Somente leitura
O operador de query expandida do MongoDB .
-
#nome ➤ string | Símbolo
Somente leitura
O nome do campo.
-
#operador ➤ string
Somente leitura
O operador de query do MongoDB.
-
#estrategia ➤ Símbolo
Somente leitura
O nome da estratégia de mesclagem.
Recolhimento do Resumo do método de instância
-
#==(outro) ➤ verdadeiro | false (também: #eql?)
A chave é igual a outro objeto?
-
#__expr_part__(objeto, negating = false) ➤ Hash
Obtém o seletor bruto que seria passado para mongo a partir dessa chave.
-
#__sort_option__ ➤ Hash (também: #__sort_pair__)
Obtenha a chave como opções de classificação de mongo bruto.
-
#hash ➤ inteiro
Calcule o código hash de uma chave.
-
#inicializar(nome, estratégia, operador, expandido = nil, &bloco) ➤ Chave
construtor
Instancie a nova chave.
-
#to_s ➤ string
Converta a chave em uma string.
-
#transform_value(valor, negação = falso) ➤ Hash
Obtém a condição do seletor bruto que seria passada para mongo.
Detalhes do construtor
#inicializar(nome, estratégia, operador, expandido = nil, &bloco) ➤ Chave
Instancie a nova chave.
113 114 115 116 117 118 119 120 |
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 113 def inicializar(name, estratégia, operador, operador, = 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, , noum: bloco ; verb: bloquear end |
Detalhes do atributo da instância
#block ➤ Proc (somente leitura)
Retorna O bloco opcional para transformar valores.
76 77 78 |
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 76 def noum: bloco ; verb: bloquear @block end |
# ➤expandida string (somente leitura)
Retorna o operador de query expandida MongoDB.
70 71 72 |
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 70 def @expanded end |
#nome ➤ string | Símbolo (somente leitura)
Retorna O nome do campo.
64 65 66 |
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 64 def name @name end |
#operador ➤ string (somente leitura)
Retorna o operador de query MongoDB .
67 68 69 |
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 67 def operador, operador @operator end |
#estrategia ➤ Símbolo (somente leitura)
Retorna o nome da estratégia de mesclagem.
73 74 75 |
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 73 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?
87 88 89 90 |
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 87 def ==(Outro) Método false a menos que Outro.is_a?(Chave) name == Outro.name && operador, operador == Outro.operador, operador && == Outro. end |
#__expr_part__(object, negating = false) ➤ Hash
Obtém o seletor bruto que seria passado para mongo a partir dessa chave.
131 132 133 |
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 131 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.
170 171 172 |
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 170 def __sort_option__ { name => operador, operador } end |
#hash ➤ inteiro
Calcule o código hash de uma chave.
96 97 98 |
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 96 def hash [name, operador, operador, ].hash end |
#to_s ➤ string
Converta a chave em uma string.
181 182 183 |
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 181 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.
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 |
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 144 def transform_value(valor, negando = false) se noum: bloco ; verb: bloquear expr = noum: bloco ; verb: bloquear[valor] mais expr = valor end se expr = { => expr} end expr = {operador, operador => expr} se negando && operador, operador != '$not' expr = {'$not' => expr} end expr end |