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

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

Colapso del resumen del método de instancia

Detalles del constructor

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

Instanciar la nueva clave.

Ejemplos:

Crear una instancia de una clave.

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

Crear una instancia de una clave para ordenar.

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

Parámetros:

  • Nombre (Cadena | Símbolo)

    El nombre del campo.

  • estrategia ( Símbolo) -

    El nombre de la estrategia de fusión.

  • operador (Cadena| Entero)

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

  • expandido (Cadena) (predeterminado: nulo)

    El operador ampliado de Mongo.



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

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

Detalles de los atributos de instancia

#bloqueProc (solo lectura)

Devuelve el bloque opcional para transformar valores.

Devuelve:

  • (Procedimiento)

    El bloque opcional para transformar valores.



76
77
78
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 76

def bloque
  @bloquear
end

#expandidoCadena (solo lectura)

Devuelve el operador de consulta expandido de MongoDB.

Devuelve:

  • (Cadena) -

    El operador de consulta expandido de MongoDB.



70
71
72
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 70

def expandido
  @expandido
end

#nombreCadena | Símbolo (solo lectura)

Devuelve el nombre del campo.

Devuelve:

  • (Cadena | Símbolo)

    El nombre del campo.



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

def Nombre
  @name
end

#operadorCadena (solo lectura)

Devuelve el operador de consulta MongoDB.

Devuelve:

  • (Cadena) -

    El operador de consulta de MongoDB.



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

def operador
  @operador
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.



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?

Ejemplos:

¿La clave es igual a otra?

key == other
key.eql? other

Parámetros:

  • otros (Objeto) -

    El objeto a comparar.

Devuelve:

  • (verdadero | falso)

    Si los objetos son iguales.



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 && expandido == otros.expandido
end

#__expr_part__(objeto, negación = falso) ⇒ Hash

Obtiene el selector sin procesar que se pasaría a Mongo desde esta clave.

Ejemplos:

Especifique el selector sin procesar.

key.__expr_part__(50)

Parámetros:

  • Objeto (Objeto) -

    El valor a incluir.

  • negando (true | false) (predeterminado: falso)

    Si la selección debe ser negada.

Devuelve:

  • (Hash)

    El selector bruto de MongoDB.



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.

Ejemplos:

Obtenga la clave como una especie.

key.__sort_option__

Devuelve:

  • (Hash)

    El par campo/dirección.



170
171
172
# Archivo 'lib/mongoid/criteria/queryable/key.rb', línea 170

def __sort_option__
  { Nombre => operador }
end

#hashEntero

Calcular el código hash de una clave.

Devuelve:

  • (Entero)

    El código hash de la clave.



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

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

#to_sCadena

Convierte la clave en una cadena.

Ejemplos:

Convierte la clave en una cadena.

key.to_s

Devuelve:

  • (Cadena) -

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

Ejemplos:

Obtiene la condición del selector sin procesar.

key.transform_value(50)

Parámetros:

  • valor (Objeto) -

    El valor a incluir.

  • negando (true | false) (predeterminado: falso)

    Si la selección debe ser negada.

Devuelve:

  • (Hash)

    El selector bruto de MongoDB.



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 expandido
    expr = {expandido => expr}
  end

  expr = {operador => expr}

  Si negando && operador != ' $no '
    expr = {' $no ' => expr}
  end

  expr
end