Clase: Mongoid::Criteria
- Hereda:
-
Objeto
- Objeto
- Mongoid::Criterios
- Incluye:
- Enumerable, Inspeccionable, Mongoid::Clients::Options, Mongoid::Clients::Sessions, Contextual, Findable, Includable, Marshalable, Modifiable, Opciones, Queryable, Scopable
- Definido en:
- lib/mongoid/criteria.rb,
lib/mongoid/criteria/options.rb,
lib/mongoid/criteria/findable.rb,
lib/mongoid/criteria/scopable.rb,
lib/mongoid/criteria/queryable.rb,
lib/mongoid/criteria/includable.rb,
lib/mongoid/criteria/modifiable.rb,
lib/mongoid/criteria/permission.rb,
lib/mongoid/criteria/translator.rb,
lib/mongoid/criteria/marshalable.rb,
lib/mongoid/criteria/queryable/key.rb,
lib/mongoid/criteria/queryable/smash.rb,
lib/mongoid/criteria/queryable/options.rb,
lib/mongoid/criteria/queryable/opcional.rb,
lib/mongoid/criteria/queryable/pipeline.rb,
lib/mongoid/criteria/queryable/selector.rb,
lib/mongoid/criteria/queryable/storable.rb,
lib/mongoid/criteria/queryable/macroable.rb,
lib/mongoid/criteria/queryable/mergeable.rb,
lib/mongoid/criteria/queryable/aggregable.rb,
lib/mongoid/criteria/queryable/expandable.rb,
lib/mongoid/criteria/queryable/selectable.rb,
lib/mongoid/criteria/queryable/extensions/set.rb,
lib/mongoid/criteria/queryable/extensions/date.rb,
lib/mongoid/criteria/queryable/extensions/hash.rb,
lib/mongoid/criteria/queryable/extensions/time.rb,
lib/mongoid/criteria/queryable/extensions/arreglo.rb,
lib/mongoid/criteria/queryable/extensions/rango.rb,
lib/mongoid/criteria/queryable/extensions/objeto.rb,
lib/mongoid/criteria/queryable/extensions/regexp.rb,
lib/mongoid/criteria/queryable/extensions/string.rb,
lib/mongoid/criteria/queryable/extensions/symbol.rb,
lib/mongoid/criteria/queryable/extensions/booleano.rb,
lib/mongoid/criteria/queryable/extensions/numeric.rb,
lib/mongoid/criteria/queryable/extensions/date_time.rb,
lib/mongoid/criteria/queryable/extensions/nil_class.rb,
lib/mongoid/criteria/queryable/extensions/big_decimal.rb,
lib/mongoid/criteria/queryable/extensions/time_with_zone.rb
Overview
La clase Criteria es el objeto principal necesario en Mongoid para recuperar objetos de la base de datos. Es un DSL que, en esencia, configura los argumentos selector y options que se pasan a una Mongo::colección en el driver de Ruby. Cada método en el Criteria devuelve self para que puedan encadenarse y crear un criterio legible para ejecutarse en la base de datos.
Definido bajo Namespace
Modules: Localizable, Incluible, Agrupable, Modificables, Opciones, Permisos, Consultable, Limitable Rango, Traductor
Colapso delresumen constante
- CHEQUE =
Arreglo estático usado para verificar con el método missing; solo necesitamos instanciarlo una vez.
[]
Resumen de atributos de la instancia colapsar
-
#asociación ⇒ Objeto
Devuelve el valor del atributo association.
-
#embedded ⇒ objeto incrustado
Devuelve el valor del atributo incrustado.
-
#klass ⇒ Object
Devuelve el valor del atributo klass.
-
#parent_document ⇒ Objeto
Devuelve el valor del atributo parent_document.
Atributos incluidos de Modificable
#create_attrs, #create_attrs Atributos adicionales para añadir al Documento al crear uno.
Atributos incluidos de Queryable
#alias, #alias Los alias., #serializadores, #serializadores Los serializadores.
Atributos incluidos de Queryable::opcional
#opciones, #opciones Los parámetros de la query.
Atributos incluidos de Queryable::Aggregable
#agregando, #agregando Indicador de si estamos agregando o no., #pipeline, #pipeline pipeline de agregación.
Atributos incluidos desde Queryable::Mergeable
#strategy, #strategy El nombre de la estrategia actual.
Resumen del método de clase colapsar
-
.from_hash(hash) ⇒ Criterios
Convierte el hash dado en un criterio.
Resumen del método de instancia colapsar
-
#==(otro) ⇒ verdadero | falso
Devuelve verdadero si
EnumerableoCriteriaproporcionados son iguales a los resultados de esteCriteriao a los propios criterios. - #_enumerable_find ⇒ Object privado
- #_findable_find ⇒ Objeto privado
-
#as_json(options = nil) ⇒ String
Necesario para recuperar correctamente un criterio en formato json.
-
#documentos ⇒ arreglo<Document>
Obtén los documentos de los criterios incrustados.
-
#documents=(docs) ⇒ Array<Document>
Establece los documentos incrustados en los criterios.
-
#¿incrustado? ⇒ verdadero | falso
¿Se cumplen los criterios para documentos incrustados?
-
#empty_and_chainable? ⇒ true | false
¿El criterio es un criterio vacío pero encadenable?
-
#extract_id ⇒ objeto
Extrae un único identificador de los criterios proporcionados.
-
#extras(extras) ⇒ Criteria
Agrega un criterio al
Criteriaque especifica opciones adicionales para ser pasadas al driver de Ruby, en el formato exacto para el driver. -
#field_list ⇒ arreglo<String>
Obtén la lista de campos incluidos.
-
# find(*args) {|Object| ... } ⇒ Documento |Array<Document> | nil
Encuentra uno o muchos documentos dados los valores _id proporcionados, o filtra los documentos en el ámbito actual en el espacio del proceso de la aplicación después de cargarlos si es necesario.
- #for_js(javascript, alcance = {}) ⇒ Criterios Obsoleto Obsoleto.
-
#freeze ⇒ Criteria
Al congelar un criterio, primero debemos inicializar el contexto; de lo contrario, la configuración del contexto en el intento de iteración generará un error de tiempo de ejecución.
-
#initialize(klass) ⇒ Criteria
constructor
Inicialice los nuevos criterios.
-
#fusionar(otros) ⇒ Criterios
Fusiona otro objeto con este
Criteriay devuelve un nuevo criterio. -
#¡Fusionar!(otro) ⇒ Criterios
Fusionar los demás criterios en este.
-
#none ⇒ Criteria
Devuelve un criterio que siempre contendrá cero resultados y nunca accederá a la base de datos.
-
#solo(*args) ⇒ Criteria
Se reemplazó para incluir _type en los campos.
-
#leer(valor = nil) ⇒ Criterios
Establece la preferencia de lectura para el criterio.
-
#respond_to?(nombre, include_private = false) ⇒ true | false
Devuelve verdadero si los criterios responden al método dado.
- #to_criteria ⇒ Criteria Obsoleto Obsoleto.
-
#to_proc ⇒ Proc
Convertir los criterios en un procedimiento.
-
#tipo(tipos) ⇒ Criterios
Agrega un criterio al
Criteriaque especifica un tipo o un arreglo de tipos que deben coincidir. -
#dónde(*args) ⇒ Criterios
Este es el punto de acceso general para la mayoría de las consultas de MongoDB.
-
#sin(*args) ⇒ Criterios
Anulado para excluir _id de los campos.
-
#sin_opciones ⇒ Criterios
Obtenga una versión de este criterio sin las opciones.
Métodos incluidos de Mongoid::Clients::Sessions
Métodos incluidos de Mongoid::Clients::Options
#colección, #nombre_de_colección, #cliente_mongo, #contexto_de_persistencia, #contexto_de_persistencia?, #con
Métodos incluidos de Scopable
#aplicar_alcance_predeterminado, #aplicar_alcance, #eliminar_alcance, #con_alcance, #¿con_alcance?, #opciones_de_alcance, #opciones_de_alcance=, #sin_alcance, #¿sin_alcance?, #con_alcance_predeterminado
Métodos incluidos de Modificable
#compilar, #crear, #crear!, #crear_con, #buscar_o_crear_por, #buscar_o_crear_por!, #buscar_o_inicializar_por, #primero_o_crear, #primero_o_crear!, #primero_o_inicializar
Métodos incluidos de Marshalable
Métodos incluidos de Incluible
#includes, #inclusiones, #inclusiones=
Métodos incluidos de Findable
#execute_or_raise, #for_ids, #multiple_from_db
Métodos incluidos desde Queryable::opcional
#ascendente, #tamaño_de_lote, #intercalación, #comentario, #tipo_de_cursor, #descendente, reenviables, #pista, #límite, #escaneo_máximo, #tiempo_máximo_ms, #sin_tiempo_de_espera, #ordenar_por, #reordenar, #omitir, #segmento, #instantánea
Métodos incluidos en Queryable::Macroable
Métodos incluidos en Seleccionable
Métodos incluidos en Queryable::Aggregable
#agregando?, #agrupar, #proyecto, #desenrollar
Métodos incluidos en Queryable::Mergeable
#and_with_operator, #intersect, #override, #reset_strategies!, #unión
Métodos incluidos de Queryable::Storable
#add_field_expression, #add_logical_operator_expression, #add_one_expression, #add_operator_expression
Métodos incluidos de Contextual
Detalles del constructor
#initialize(klass) ⇒ Criteria
Inicialice los nuevos criterios.
233 234 235 236 237 238 |
# Archivo 'lib/mongoid/criteria.rb', línea 233 def inicializar(klass) @klass = klass @embedded = nulo @none = nulo klass ? super(klass.campos_alias, klass.campos, klass.relaciones, klass.asociaciones_aliasadas) : super({}, {}, {}, {}) end |
Gestión dinámica de métodos
Esta clase maneja métodos dinámicos a través del método method_missing
#method_missing ⇒ Object (privado)
Se utiliza para encadenar ámbitos Criteria juntos en el for de métodos de clase en el Document para el cual se aplica el criterio.
530 531 532 533 534 535 536 537 538 539 540 |
# Archivo 'lib/mongoid/criteria.rb', línea 530 ruby2_keywords def method_missing(Nombre, *args, Ybloque) si klass.respond_to?(Nombre) klass.enviar(con: alcance, sí mismo) hacer klass.enviar(Nombre, *args, Ybloque) end elsif Verificar.respond_to?(Nombre) return entradas.enviar(Nombre, *args, Ybloque) else super end end |
Detalles de los atributos de instancia
#asociación ⇒ objeto
Devuelve el valor del atributo association.
68 69 70 |
# Archivo 'lib/mongoid/criteria.rb', línea 68 def asociación @asociación end |
#incrustado ⇒ Objeto
Devuelve el valor del atributo incrustado.
68 69 70 |
# Archivo 'lib/mongoid/criteria.rb', línea 68 def @embedded end |
#klass ⇒ Object
Devuelve el valor del atributo klass.
68 69 70 |
# Archivo 'lib/mongoid/criteria.rb', línea 68 def klass @klass end |
#documento_principal ⇒ Objeto
Devuelve el valor del atributo parent_document.
68 69 70 |
# Archivo 'lib/mongoid/criteria.rb', línea 68 def parent_document @parent_document end |
Detalles del método de clase
.from_hash(hash) ⇒ Criterios
Convierte el hash dado en un criterio. Itera sobre cada clave del hash, que debe corresponder al método de un objeto de criterio. El hash también debe incluir una clave "klass".
55 56 57 58 59 60 61 |
# Archivo 'lib/mongoid/criteria.rb', línea 55 def desde_hash(hash) criterios = Criterios.Nuevo(hash.borrar(:klass) || hash.borrar('klass')) hash.each_pair hacer |Método, args| criterios = criterios.__send__(Método, args) end criterios end |
Detalles del método de instancia
#==(otro) ⇒ verdadero | falso
Forzará la carga de la base de datos cuando se invoque si se pasa un enumerable.
Devuelve verdadero si Enumerable o Criteria proporcionados son iguales a los resultados de este Criteria o a los propios criterios.
78 79 80 81 |
# Archivo 'lib/mongoid/criteria.rb', línea 78 def ==(Otros) return super si Otros.respond_to?(:selector) entradas == Otros end |
#_enumerable_find ⇒ Object
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
26
|
# Archivo 'lib/mongoid/criteria.rb', línea 26 Alias :_hallazgo_enumerable Buscar |
#_findable_find ⇒ Objeto
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
33 |
# Archivo 'lib/mongoid/criteria.rb', línea 33 Alias :_findable_find Buscar |
#as_json(options = nil) ⇒ String
Es necesario para obtener correctamente un criterio como json.
140 141 142 |
# Archivo 'lib/mongoid/criteria.rb', línea 140 def as_json( = nulo) entradas.as_json() end |
#documents ⇒ Array<Document>
Obtén los documentos de los criterios incrustados.
150 151 152 |
# Archivo 'lib/mongoid/criteria.rb', línea 150 def Documentos @documents ||= [] end |
#documents=(docs) ⇒ Array<Document>
Establece los documentos incrustados en los criterios.
161 162 163 |
# Archivo 'lib/mongoid/criteria.rb', línea 161 def documento=(docs) @documents = docs end |
#¿integrado? ⇒ true | false
¿Es el criterio para documentos incrustados?
171 172 173 |
# Archivo 'lib/mongoid/criteria.rb', línea 171 def !!@embedded end |
#empty_and_chainable? ⇒ true | false
¿Son los criterios unos criterios vacíos pero encadenables?
301 302 303 |
# Archivo 'lib/mongoid/criteria.rb', línea 301 def empty_and_chainable? !!@none end |
#extract_id ⇒ Objeto
Extraer un único ID de los criterios proporcionados. Podría estar en una $and query o en una query directa de _id.
182 183 184 |
# Archivo 'lib/mongoid/criteria.rb', línea 182 def extract_id selector['_id'] || selector[:_identificación] || selector['id'] || selector[:id] end |
#extras(extras) ⇒ Criteria
Agrega un criterio al Criteria que especifica opciones adicionales para ser pasadas al driver de Ruby, en el formato exacto para el driver.
criteria.extras(:limit => 20, :omitir => 40)
195 196 197 198 199 |
# Archivo 'lib/mongoid/criteria.rb', línea 195 def extras(extras) crit = clon crit..¡unir!(extras) crit end |
#lista_de_campos ⇒ Matriz<String>
Obtén la lista de campos incluidos.
207 208 209 210 211 212 213 |
# Archivo 'lib/mongoid/criteria.rb', línea 207 def field_list si [campo] [campo].claves.rechazar{ |llave| llave == klass.discriminador_clave } else [] end end |
#find(*args) {|Object| ... } ⇒ Document | Array<Document> | nil
Cada argumento puede ser un ID individual, un arreglo de IDs o un arreglo anidado. Cada arreglo se aplanará.
Encuentra uno o muchos documentos dados los valores _id proporcionados, o filtra los documentos en el ámbito actual en el espacio del proceso de la aplicación después de cargarlos si es necesario.
Si no se le da un bloque a este método, delega a Findable#find y encuentra uno o varios documentos para los valores de _id proporcionados.
Si este método recibe un bloque, delega en Enumerable#find y devuelve el primer documento de los encontrados por el actual objeto Crieria para el que el bloque devuelve un valor verdadero.
Ten en cuenta que el argumento "proc por defecto" de Enumerable no es tratado especialmente por Mongoid - la decisión entre delegar a Findable vs Enumerable se toma únicamente en función de si se pasa un bloque a find.
124 125 126 127 128 129 130 |
# Archivo 'lib/mongoid/criteria.rb', línea 124 def buscar(*args, Ybloque) si ¿block_given? _enumerable_find(*args, Ybloque) else _findable_find(*args) end end |
#for_js(javascript, alcance = {}) ⇒ Criterios
Encontrar documentos mediante JavaScript y alcance proporcionados. Utiliza un $where, pero se diferencia de Criteria#where en que pasará un objeto de código a la consulta en lugar de una string pura. Protección contra ataques de inyección de JavaScript.
466 467 468 469 470 471 472 473 474 |
# Archivo 'lib/mongoid/criteria.rb', línea 466 def para_js(JavaScript, Alcance = {}) Código = si Alcance.¿vacío? # CodeWithScope no es compatible con $where en MongoDB 4.4 BSON::Código.Nuevo(JavaScript) else BSON::Código con alcance.Nuevo(JavaScript, Alcance) end js_query(Código) end |
#freeze ⇒ Criteria
Al congelar un criterio, primero debemos inicializar el contexto; de lo contrario, la configuración del contexto en el intento de iteración generará un error de tiempo de ejecución.
223 224 225 |
# Archivo 'lib/mongoid/criteria.rb', línea 223 def freeze context y inclusiones y super end |
#fusionar(otros) ⇒ Criterios
Fusiona otro objeto con este Criteria y devuelve un nuevo criterio. El otro objeto puede ser un Criteria o un Hash. Esto se utiliza para combinar varios ámbitos, donde se desea una situación de ámbitos encadenados.
260 261 262 263 264 |
# Archivo 'lib/mongoid/criteria.rb', línea 260 def fusionar(Otros) crit = clon crit.¡unir!(Otros) crit end |
#¡Fusionar!(otro) ⇒ Criterios
Fusionar los demás criterios en este.
274 275 276 277 278 279 280 281 282 |
# Archivo 'lib/mongoid/criteria.rb', línea 274 def ¡unir!(Otros) Otros = sí mismo.clase.desde_hash(Otros) si Otros.is_a?(Picadillo) selector.¡unir!(Otros.selector) .¡unir!(Otros.) sí mismo.Documentos = Otros.Documentos.dup a menos que Otros.Documentos.¿vacío? sí mismo. = Otros. sí mismo.inclusiones = (inclusiones + Otros.inclusiones).único sí mismo end |
#none ⇒ Criteria
Devuelve un criterio que siempre contendrá cero resultados y nunca accederá a la base de datos.
291 292 293 |
# Archivo 'lib/mongoid/criteria.rb', línea 291 def Ninguno @none = true y sí mismo end |
#only(*args) ⇒ Criterios
Se reemplazó para incluir _type en los campos.
313 314 315 316 317 318 319 320 321 322 323 |
# Archivo 'lib/mongoid/criteria.rb', línea 313 def solo(*args) args = args.nivelar return clon si args.¿vacío? si (args Y Campos::IDS).¿vacío? args.unshift(:_identificación) end si klass.¿hereditaria? args.push(klass.discriminador_clave.to_sym) end super(*args) end |
#read(valor = nil) ⇒ Criteria
Establece la preferencia de lectura para el criterio.
333 334 335 336 337 |
# Archivo 'lib/mongoid/criteria.rb', línea 333 def Lea(Valor = nulo) clon.tocar hacer |criterios| criterios..¡unir!(leer: Valor) end end |
#respond_to?(nombre, include_private = false) ⇒ true | false
Devuelve verdadero si los criterios responden al método dado.
361 362 363 |
# Archivo 'lib/mongoid/criteria.rb', línea 361 def respond_to?(Nombre, incluir_privado = false) super || klass.respond_to?(Nombre) || Verificar.respond_to?(Nombre, incluir_privado) end |
#to_criteria ⇒ Criteria
Conveniencia para los objetos que desean fusionarse en un criterio.
374 375 376 |
# Archivo 'lib/mongoid/criteria.rb', línea 374 def to_criteria sí mismo end |
#to_proc ⇒ Proc
Convertir los criterios en un procedimiento.
385 386 387 |
# Archivo 'lib/mongoid/criteria.rb', línea 385 def to_proc ->{ sí mismo } end |
#type(tipos) ⇒ Criterios
Agrega un criterio al Criteria que especifica un tipo o un arreglo de tipos que deben coincidir.
399 400 401 |
# Archivo 'lib/mongoid/criteria.rb', línea 399 def tipo(tipos) any_in(sí mismo.discriminador_clave.to_sym => Arreglo(tipos)) end |
#donde(*args) ⇒ Criterios
Este es el punto de entrada general para la mayoría de las consultas de MongoDB. Crea un campo estándar: selección de valor y selección expandida mediante métodos hash, o una selección $where si se proporciona una cadena.
420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 |
# Archivo 'lib/mongoid/criteria.rb', línea 420 def dónde(*args) # Históricamente este método requería exactamente un argumento. # Como se indica en https://jira.mongodb.org/browse/MONGOID-4804 también acepta # zero arguments. # La implementación subyacente donde la invocación que la invoca soporta # cualquier número de argumentos, pero actualmente no permitimos múltiple # argumentos a través de este método. Esta API puede ser reconsiderada en el # future. si args.longitud > 1 propagar ArgumentError, "Criteria#where requiere cero o un argumento (dado #{args.length})" end si args.longitud == 1 expresión = args.primero si expresión.is_a?(::String) && propagar Errors::Javascript no compatible.Nuevo(klass, expresión) end end super end |
#sin(*args) ⇒ Criterio
Anulado para excluir _id de los campos.
347 348 349 350 |
# Archivo 'lib/mongoid/criteria.rb', línea 347 def sin(*args) args -= id_fields super(*args) end |
#sin_opciones ⇒ Criterio
Obtenga una versión de este criterio sin las opciones.
446 447 448 449 450 |
# Archivo 'lib/mongoid/criteria.rb', línea 446 def crit = clon crit..borrar crit end |