Clase: Mongoid::Criteria::Queryable::Key
- Hereda:
-
Objeto
- Objeto
- Mongoid::Criterios::Consultable::Clave
- Definido en:
- lib/mongoid/criterios/consultable/clave.rb
Overview
Los objetos clave representan especificaciones para crear expresiones de consulta utilizando selectores MongoDB.
Mongoid traduce directamente las condiciones simples de clave-valor en hashes de expresiones sin utilizar objetos de clave. Por ejemplo, la siguiente condición:
Foo.where(price: 1)
… se traduce a la siguiente expresión simple:
{price: 1}
Condiciones más complejas comenzarían a involucrar objetos clave. Por ejemplo:
Foo.where(:price.gt => 1)
… ocasiona que se cree una instancia de Key de la siguiente manera:
Key.new(:price, :__override__, '$gt')
Esta instancia de Key utiliza operator, pero ni expanded ni block. La expresión de query correspondiente de MongoDB es:
{price: {'$gt' => 1}}
Un ejemplo aún más complejo es la siguiente condición:
Foo.geo_spatial(:boundary.intersects_point => [1, 10])
Al procesar esta condición se creará una instancia de clave de la siguiente manera:
Key.new(:location, :__override__, '$geoIntersects', '$geometry') do |value|
{ "type" => POINT, "coordinates" => value }
end
…eventualmente, produciendo la siguiente expresión de query de MongoDB:
{
boundary: {
'$geoIntersects' => {
'$geometry' => {
type: "Point" ,
coordinates: [ 1, 10 ]
}
}
}
}
Las instancias clave pueden considerarse procs que asignan un valor a la expresión de consulta de MongoDB necesaria para obtener la condición de la clave, dado el valor.
Resumen de atributos de la instancia colapsar
-
#block ⇒ Proc
Solo lectura
El bloque opcional para transformar valores.
-
#expandidas ⇒ String
Solo lectura
El operador del query ampliado de MongoDB.
-
#nombre ⇒ string | Símbolo
Solo lectura
El nombre del campo.
-
#operador ⇒ String
Solo lectura
El operador del query de MongoDB.
-
#strategy ⇒ Symbol
Solo lectura
El nombre de la estrategia de fusión.
Resumen del método de instancia colapsar
-
#==(otro) ⇒ true | false (también: #eql?)
¿La clave equivale a otro objeto?
-
#__expr_part__(object, negating = false) ⇒ Hash
Obtiene el selector en bruto que se pasaría a Mongo desde esta clave.
-
#__sort_option__ ⇒ Hash (también: #__sort_pair__)
Obtener la clave como opciones de ordenación de Mongo sin procesar.
-
#hash ⇒ Integer
Calcular el código hash de una clave.
-
#inicializar(nombre, estrategia, operador, expandido = nulo, &bloque) ⇒ Clave
constructor
Instanciar la nueva clave.
-
#to_s ⇒ String
Convierte la clave en una string.
-
#transform_value(value, negating = false) ⇒ Hash
Obtiene la condición del selector sin procesar que se pasaría a Mongo.
Detalles del constructor
#inicializar(nombre, estrategia, operador, expandido = nulo, &bloque) ⇒ Clave
Instanciar la nueva clave.
113 114 115 116 117 118 119 120 |
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 113 def inicializar(Nombre, estrategia, operador, = nulo, Ybloque) a menos que operador.is_a?(String) || operador.is_a?(entero) propagar ArgumentError, "Eloperador debe ser una cadena o un entero: #{operator.inspect}" end @name, @strategy, @operator, @expanded, @block = Nombre, estrategia, operador, , bloque end |
Detalles de los atributos de instancia
#bloque ⇒ Proc (solo lectura)
Devuelve el bloque opcional para transformar valores.
76 77 78 |
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 76 def bloque @block end |
#expanded ⇒ String (solo lectura)
Devuelve el operador de consulta expandido de MongoDB.
70 71 72 |
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 70 def @expanded end |
#nombre ⇒ Cadena | Símbolo (solo lectura)
Devuelve el nombre del campo.
64 65 66 |
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 64 def Nombre @name end |
#operador ⇒ String (solo lectura)
Retorna el operador del query MongoDB.
67 68 69 |
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 67 def operador @operator end |
#estrategia ⇒ Símbolo (solo lectura)
Devuelve el nombre de la estrategia de fusión.
73 74 75 |
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 73 def estrategia @strategy end |
Detalles del método de instancia
#==(otro) ⇒ verdadero | falso También conocido como: eql?
¿La clave coincide con otro objeto?
87 88 89 90 |
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 87 def ==(Otros) return false a menos que Otros.is_a?(Clave) Nombre == Otros.Nombre && operador == Otros.operador && == Otros. end |
#__expr_part__(objeto, negación = falso) ⇒ Hash
Obtiene el selector en bruto que se pasaría a Mongo desde esta clave.
131 132 133 |
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 131 def __expr_part__(Objeto, negar = false) { Nombre.to_s => transform_value(Objeto, negar) } end |
#__sort_option__ ⇒ Hash También conocido como: __sort_pair__
Obtener la clave como opciones de ordenación de Mongo sin procesar.
170 171 172 |
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 170 def __sort_option__ { Nombre => operador } end |
#hash ⇒ Integer
Calcular el código hash de una clave.
96 97 98 |
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 96 def hash [Nombre, operador, ].hash end |
#to_s ⇒ String
Convierte la clave en una string.
181 182 183 |
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 181 def to_s @name.to_s end |
#transform_value(valor, negando = false) ⇒ Hash
Obtiene la condición del selector sin procesar que se pasaría a Mongo.
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 |
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 144 def transform_value(Valor, negar = false) si bloque expr = bloque[Valor] else expr = Valor end si expr = { => expr} end expr = {operador => expr} si negar && operador != ' $no ' expr = {' $no ' => expr} end expr end |