Clase: Mongoid::Criteria::Queryable::Key

Hereda:
Objeto
  • Objeto
Mostrar todo
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

Resumen del método de instancia colapsar

Detalles del Constructor

#inicializar(nombre, estrategia, operador, expandido = nil, & bloque) ⇒ Clave

Instanciar la nueva clave.

Ejemplos:

Instanciar una clave.

Key.new("age", :__override__, "$gt")

Instancia una clave para la clasificación.

Key.new(:field, :__override__, 1)

Parámetros:

  • Nombre (String | Símbolo)

    El nombre del campo.

  • estrategia (Símbolo)

    El nombre de la estrategia de fusión.

  • operador (String | Integer)

    El operador de MongoDB, o dirección de ordenación (1 o -1).

  • Ampliado (string) (valor por defecto: nil)

    El operador expandido de Mongo.



111
112
113
114
115
116
117
118
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 111

def inicializar(Nombre, estrategia, operador, Ampliado = 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, Ampliado, bloque
end

Detalles de atributo de instancias

#bloqueProc (solo lectura)

Devuelve el bloque opcional para transformar valores.

Devuelve:

  • (Proc)

    El bloque opcional para transformar valores.



73
74
75
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 73

def bloque
  @block
end

#expandedString (solo lectura)

Devuelve el operador del query expandido de MongoDB.

Devuelve:

  • (string)

    El operador del query ampliado de MongoDB.



67
68
69
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 67

def Ampliado
  @expanded
end

#nombrestring | Símbolo (sólo lectura)

Devuelve el nombre del campo.

Devuelve:

  • (String | Símbolo)

    El nombre del campo.



61
62
63
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 61

def Nombre
  @name
end

#operadorString (solo lectura)

Retorna el operador del query MongoDB.

Devuelve:

  • (string)

    El operador del query de MongoDB.



64
65
66
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 64

def operador
  @operator
end

#estrategiaSímbolo (solo lectura)

Devuelve el nombre de la estrategia de fusión.

Devuelve:

  • (Símbolo)

    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?

Ejemplos:

¿La clave es igual a otra?

key == other
key.eql? other

Parámetros:

  • Otros (objeto)

    El objeto con el que comparar.

Devuelve:

  • (true | false)

    Si los objetos son iguales.



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 && Ampliado == Otros.Ampliado
end

#__expr_part__(objeto, negando = false) ⇒ Hash

Obtiene el selector en bruto que se pasaría a Mongo desde esta clave.

Ejemplos:

Especifica el selector en bruto.

key.__expr_part__(50)

Parámetros:

  • Objeto (objeto)

    El valor que se debe incluir.

  • negar (true | false) (por defecto: false)

    Si la selección se debe negar.

Devuelve:

  • (encriptada)

    El selector bruto de MongoDB.



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.

Ejemplos:

Obtener la clave como clasificador.

key.__sort_option__

Devuelve:

  • (encriptada)

    El par campo/dirección.



164
165
166
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 164

def __sort_option__
  { Nombre => operador }
end

#hashInteger

Calcular el código hash de una clave.

Devuelve:

  • (Número entero)

    El código hash para la clave.



94
95
96
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 94

def hash
  [ Nombre, operador, Ampliado ].hash
end

#to_sString

Convierte la clave en una string.

Ejemplos:

Convierte la clave en una string.

key.to_s

Devuelve:

  • (string)

    La clave como 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.

Ejemplos:

Obtiene la condición de selector sin procesar.

key.transform_value(50)

Parámetros:

  • Valor (objeto)

    El valor que se debe incluir.

  • negar (true | false) (por defecto: false)

    Si la selección se debe negar.

Devuelve:

  • (encriptada)

    El selector bruto de MongoDB.



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 = { Ampliado => expr } si Ampliado

  expr = { operador => expr }

  expr = { '$not' => expr } si negar && operador != '$not'

  expr
end