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 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

Resumen del método de instancia colapsar

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 (String | Símbolo)

    El nombre del campo.

  • estrategia (Símbolo)

    El nombre de la estrategia de fusión.

  • operador (String | Integer)

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

  • Ampliado (Cadena) (predeterminado: nulo)

    El operador expandido 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, Ampliado = 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, Ampliado, bloque
end

Detalles de los atributos de instancia

#bloqueProc (solo lectura)

Devuelve el bloque opcional para transformar valores.

Devuelve:

  • (Proc)

    El bloque opcional para transformar valores.



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

def bloque
  @block
end

#expandedString (solo lectura)

Devuelve el operador de consulta expandido de MongoDB.

Devuelve:

  • (string)

    El operador del query ampliado de MongoDB.



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

def Ampliado
  @expanded
end

#nombreCadena | Símbolo (solo lectura)

Devuelve el nombre del campo.

Devuelve:

  • (String | Símbolo)

    El nombre del campo.



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

def Nombre
  @name
end

#operadorString (solo lectura)

Retorna el operador del query MongoDB.

Devuelve:

  • (string)

    El operador del query de MongoDB.



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

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.



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?

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.



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

#__expr_part__(objeto, negación = falso) ⇒ 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.



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.

Ejemplos:

Obtener la clave como clasificador.

key.__sort_option__

Devuelve:

  • (encriptada)

    El par campo/dirección.



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

def __sort_option__
  { Nombre => operador }
end

#hashInteger

Calcular el código hash de una clave.

Devuelve:

  • (Número 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, 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.



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.

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.



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

  expr = {operador => expr}

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

  expr
end