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 :
{ 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
-
#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.
111 112 113 114 115 116 117 118 |
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 111 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.
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.
67 68 69 |
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 67 def @expanded end |
#nome ➤ string | Símbolo (somente leitura)
Retorna O nome do campo.
61 62 63 |
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 61 def name @name end |
#operador ➤ string (somente leitura)
Retorna o operador de query MongoDB .
64 65 66 |
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 64 def operador, operador @operator end |
#estrategia ➤ Símbolo (somente leitura)
Retorna 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?
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 && == Outro. end |
#__expr_part__(object, negating = false) ➤ Hash
Obtém o seletor bruto que seria passado para mongo a partir dessa chave.
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.
164 165 166 |
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 164 def __sort_option__ { name => operador, operador } end |
#hash ➤ inteiro
Calcule o código hash de uma chave.
94 95 96 |
# Arquivo 'lib/mongoid/criteria/queryable/key.rb', linha 94 def hash [ name, operador, operador, ].hash end |
#to_s ➤ string
Converta a chave em 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.
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 = { => expr } se expr = { operador, operador => expr } expr = { '$not' => expr } se negando && operador, operador != '$not' expr end |