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 clave-valor simples a hashes de expresión sin utilizar objetos 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)
…hace que se cree una instancia de clave de la siguiente manera:
Key.new(:price, :__override__, '$gt')
Esta instancia de clave utiliza operator, pero no expanded ni block. La expresión de consulta de MongoDB correspondiente 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
… produciendo eventualmente la siguiente expresión de consulta de MongoDB:
{
boundary: {
'$geoIntersects' => {
'$geometry' => {
type: "Point" ,
coordinates: [ 1, 10 ]
}
}
}
}
Las instancias clave pueden considerarse como procedimientos que asignan un valor a la expresión de consulta MongoDB necesaria para obtener la condición de la clave, dado el valor.
Colapso delresumen de atributos de instancia
-
#block ⇒ Proc
solo lectura
El bloque opcional para transformar valores.
-
#expandido ⇒ Cadena
solo lectura
El operador de consulta expandido de MongoDB.
-
#nombre ⇒ Cadena | Símbolo
solo lectura
El nombre del campo.
-
#operador ⇒ Cadena
solo lectura
El operador de consulta de MongoDB.
-
#strategy ⇒ Symbol
solo lectura
El nombre de la estrategia de fusión.
Colapso del resumen del método de instancia
-
#==(otro) ⇒ verdadero | falso (también: #eql?)
¿La clave equivale a otro objeto?
-
#__expr_part__(object, negating = false) ⇒ Hash
Obtiene el selector sin procesar que se pasaría a Mongo desde esta clave.
-
#__sort_option__ ⇒ Hash (también: #__sort_pair__)
Obtenga la clave como opciones de clasificación de Mongo sin procesar.
-
#hash ⇒ Entero
Calcular el código hash de una clave.
-
#inicializar(nombre, estrategia, operador, expandido = nulo, &bloque) ⇒ Clave
constructor
Instanciar la nueva clave.
-
#to_s ⇒ Cadena
Convierte la clave en una cadena.
-
#transform_value(valor, negando = falso) ⇒ 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 no ser que operador.is_a?(String) || operador.is_a?(entero) propagar ArgumentError, "Eloperador debe ser una cadena o un entero: #{operator.inspect}" end @name, @strategy, @operador, @expandido, @bloquear = 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 @bloquear end |
#expandido ⇒ Cadena (solo lectura)
Devuelve el operador de consulta expandido de MongoDB.
70 71 72 |
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 70 def @expandido 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 ⇒ Cadena (solo lectura)
Devuelve el operador de consulta MongoDB.
67 68 69 |
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 67 def operador @operador 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 es igual a otro objeto?
87 88 89 90 |
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 87 def ==(otros) return false a no ser que otros.is_a?(Clave) Nombre == otros.Nombre && operador == otros.operador && == otros. end |
#__expr_part__(objeto, negación = falso) ⇒ Hash
Obtiene el selector sin procesar 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, negando = false) { Nombre.a_s => valor_de_transformación(Objeto, negando) } end |
#__sort_option__ ⇒ Hash También conocido como: __sort_pair__
Obtenga la clave como opciones de clasificació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 ⇒ Entero
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 ⇒ Cadena
Convierte la clave en una cadena.
181 182 183 |
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 181 def a_s @name.a_s end |
#transform_value(valor, negando = falso) ⇒ 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 valor_de_transformación(valor, negando = false) Si bloque expr = bloque[valor] else expr = valor end Si expr = { => expr} end expr = {operador => expr} Si negando && operador != ' $no ' expr = {' $no ' => expr} end expr end |