Clase: Mongoid::Criteria::Queryable::Key
- Hereda:
-
Objeto
- Objeto
- Mongoid::Criteria::Queryable::Key
- Definido en:
- lib/mongoid/criteria/queryable/key.rb
Overview
Los objetos clave representan especificaciones para construir expresiones de query utilizando selectores de 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 empezarían a involucrar objetos Key. Por ejemplo:
Foo.where(:price.gt => 1)
... provoca 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])
Procesar esta condición hará que se cree una instancia de Key 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 MongoDB:
{ boundary: { '$geoIntersects' => { '$geometry' => { type: "punto" , coordinates: [ 1, 10 ] } } } }
Las instancias clave pueden considerarse como procedimientos que asignan un valor a la expresión de query 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 es igual 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.
-
#initialize(nombre, estrategia, operador, expandido = nil, y 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 de selector sin procesar que se pasaría a Mongo.
Detalles del Constructor
#inicializar(nombre, estrategia, operador, expandido = nil, & bloque) ⇒ Clave
Instanciar la nueva clave.
111 112 113 114 115 116 117 118 |
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 111 def inicializar(Nombre, estrategia, operador, = nulo, &bloque) a menos que operador.is_a?(String) || operador.is_a?(entero) propagar ArgumentError, "El operador debe ser una string o un número entero: #{operator.inspect}" end @name, @strategy, @operator, @expanded, @block = Nombre, estrategia, operador, , bloque end |
Detalles de atributo de instancias
#bloque ⇒ Proc (solo lectura)
Devuelve el bloque opcional para transformar valores.
73 74 75 |
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 73 def bloque @block end |
#expanded ⇒ String (solo lectura)
Devuelve el operador del query expandido de MongoDB.
67 68 69 |
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 67 def @expanded end |
#nombre ⇒ string | Símbolo (sólo lectura)
Devuelve el nombre del campo.
61 62 63 |
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 61 def Nombre @name end |
#operador ⇒ String (solo lectura)
Retorna el operador del query MongoDB.
64 65 66 |
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 64 def operador @operator end |
#estrategia ⇒ Símbolo (solo lectura)
Devuelve el nombre de la estrategia de fusión.
70 71 72 |
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 70 def estrategia @strategy end |
Detalles del método de instancia
#==(otro) ⇒ verdadero | falso También conocido como: eql?
¿La clave coincide con otro objeto?
84 85 86 87 88 |
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 84 def ==(Otros) return false a menos que Otros.is_a?(Clave) Nombre == Otros.Nombre && operador == Otros.operador && == Otros. end |
#__expr_part__(objeto, negando = false) ⇒ Hash
Obtiene el selector en bruto que se pasaría a Mongo desde esta clave.
129 130 131 |
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 129 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.
164 165 166 |
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 164 def __sort_option__ { Nombre => operador } end |
#hash ⇒ Integer
Calcular el código hash de una clave.
94 95 96 |
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 94 def hash [ Nombre, operador, ].hash end |
#to_s ⇒ String
Convierte la clave en una string.
175 176 177 |
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 175 def to_s @name.to_s end |
#transform_value(valor, negando = false) ⇒ Hash
Obtiene la condición de selector sin procesar que se pasaría a Mongo.
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 |
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 142 def transform_value(Valor, negar = false) expr = si bloque bloque[Valor] else Valor end expr = { => expr } si expr = { operador => expr } expr = { '$not' => expr } si negar && operador != '$not' expr end |