Clase: Mongoid::Criteria
- Hereda:
-
Objeto
- Objeto
- Mongoid::Criterios
- Incluye:
- Enumerable, Inspeccionable, Mongoid::Clientes::Opciones, Mongoid::Clientes::Sesiones, Contextual, Localizable, Incluible, Marshalizable, Modificable, Opciones, Consultable, Alcance
- 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/optional.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/array.rb,
lib/mongoid/criteria/queryable/extensions/range.rb,
lib/mongoid/criteria/queryable/extensions/object.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/boolean.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 del selector y las opciones que se pasan a una Mongo::Collection en el controlador Ruby. Cada método de la clase Criteria retorna a sí mismo; se pueden encadenar para crear un criterio legible que se ejecute en la base de datos.
Definido en el espacio de nombres
Modules: Localizable, Incluible, Marshalable, Modificable, Opciones, Permiso, Consultable, Alcance, Traductor
Colapso delresumen constante
- COMPROBAR =
Matriz estática utilizada para verificar si falta un método: solo necesitamos instanciarlo una vez.
[]
Colapso delresumen de atributos de instancia
-
#asociación ⇒ Objeto
Devuelve el valor de la asociación de atributos.
-
#incrustado ⇒ Objeto
Devuelve el valor del atributo incrustado.
-
#klass ⇒ Object
Devuelve el valor del atributo klass.
-
#documento_principal ⇒ Objeto
Devuelve el valor del atributo parent_document.
Atributos incluidos de Modificable
#create_attrs, #create_attrs Atributos adicionales para agregar al documento durante la creación.
Atributos incluidos en Queryable
#aliases, #aliases Los alias., #serializadores, #serializadores Los serializadores.
Atributos incluidos en Queryable::Optional
#opciones, #opciones Las opciones de consulta.
Atributos incluidos de Queryable::Aggregable
#agregando, #agregando Bandera que indica si estamos agregando o no, #tubería, #tubería La tubería de agregación.
Atributos incluidos en Queryable::Mergeable
#estrategia, #estrategia El nombre de la estrategia actual.
Colapso delresumen del método de clase
-
.from_hash(hash) ⇒ Criterios
Convierte el hash dado en un criterio.
Colapso del resumen del método de instancia
-
#==(otro) ⇒ verdadero | falso
Devuelve verdadero si el
EnumerableoCriteriasuministrado es igual a los resultados de esteCriteriao al criterio en sí. - #_enumerable_find ⇒ Object privada
- #_findable_find ⇒ Objeto privada
-
#as_json(options = nil) ⇒ String
Era necesario recuperar correctamente un criterio en formato json.
-
#documentos ⇒ Array<Document>
Obtenga los documentos de los criterios integrados.
-
#documents=(docs) ⇒ Array<Document>
Establezca los documentos incrustados según los criterios.
-
#¿incrustado? ⇒ verdadero | falso
¿Cuáles son los criterios para los documentos incrustados?
-
#empty_and_chainable? ⇒ true | false
¿Es el criterio un criterio vacío pero encadenable?
-
#extract_id ⇒ Objeto
Extrae un único identificador de los criterios proporcionados.
-
#extras(extras) ⇒ Criteria
Agrega un criterio a
Criteriaque especifica opciones adicionales que se pasarán al controlador Ruby, en el formato exacto del controlador. -
#lista_de_campos ⇒ Matriz<String>
Obtenga la lista de campos incluidos.
-
#find(*args) {|Objeto|... } ⇒ Documento | Matriz<Document> | nulo
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
Inicializar 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) ⇒ Criterios
Se reemplazó para incluir _type en los campos.
-
#leer(valor = nulo) ⇒ Criterios
Establezca la preferencia de lectura para los criterios.
-
#responder_a?(nombre, incluir_privado = falso) ⇒ verdadero | falso
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(s) ⇒Criterios
Agrega un criterio a
Criteriaque especifica un tipo o una matriz de tipos que deben coincidir. -
#donde(*args) ⇒ Criterios
Este es el punto de entrada general para la mayoría de las consultas de MongoDB.
-
#sin(*args) ⇒ Criterios
Se anuló 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 en Mongoid::Clients::Options
#colección, #nombre_de_colección, #cliente_mongo, #contexto_de_persistencia, #contexto_de_persistencia?, #con
Métodos incluidos en 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 Modifiable
#construir, #crear, #¡crear!, #crear_con, #encontrar_o_crear_por, #encontrar_o_crear_por!, #encontrar_o_inicializar_por, #primero_o_crear, #primero_o_crear!, #primero_o_inicializar
Métodos incluidos de Marshalable
Métodos incluidos en Includable
#incluye, #inclusiones, #inclusiones=
Métodos incluidos en Findable
#ejecutar_o_elevar, #para_ids, #múltiples_desde_la_base_de_datos
Métodos incluidos en Queryable::Optional
#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
#operador_y_con, #intersecar, #anular, #¡reiniciar_estrategias!, #unión
Métodos incluidos en 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
Inicializar los nuevos criterios.
233 234 235 236 237 238 |
# Archivo 'lib/mongoid/criteria.rb', línea 233 def inicializar(klass) @klass = klass @incorporado = nulo @none = nulo klass ? Super(klass.campos con alias, klass.campos, klass.relaciones, klass.asociaciones_aliasadas) : Super({}, {}, {}, {}) end |
Manejo de métodos dinámicos
Esta clase maneja métodos dinámicos a través del método method_missing
#method_missing ⇒ Objeto (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 método_faltante(Nombre, *args, Ybloque) Si klass.respond_to?(Nombre) klass.Enviar(:con_alcance, yo) hacer klass.Enviar(Nombre, *args, Ybloque) end elsif VER.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 de la asociación de atributos.
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 @incorporado 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 documento principal @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.__enviar__(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 el Enumerable o Criteria suministrado es igual a los resultados de este Criteria o al criterio en sí.
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 :encontrar |
#_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 :encontrar |
#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 como_json( = nulo) entradas.como_json() end |
#documents ⇒ Array<Document>
Obtenga los documentos de los criterios integrados.
150 151 152 |
# Archivo 'lib/mongoid/criteria.rb', línea 150 def Documentos @documents ||= [] end |
#documents=(docs) ⇒ Array<Document>
Establezca los documentos incrustados según los criterios.
161 162 163 |
# Archivo 'lib/mongoid/criteria.rb', línea 161 def documentos=(docs) @documents = docs end |
#¿incrustado? ⇒ verdadero | falso
¿Cuáles son los criterios para los documentos incrustados?
171 172 173 |
# Archivo 'lib/mongoid/criteria.rb', línea 171 def !!@incorporado end |
#¿vacío_y_encadenable? ⇒ verdadero | falso
¿Es el criterio un criterio vacío pero encadenable?
301 302 303 |
# Archivo 'lib/mongoid/criteria.rb', línea 301 def empty_and_chainable? !!@none end |
#extract_id ⇒ Objeto
Extrae un único ID a partir de los criterios proporcionados. Puede ser una consulta `$and` o una consulta `_id` directa.
182 183 184 |
# Archivo 'lib/mongoid/criteria.rb', línea 182 def id_de_extracto selector['_id'] || selector[:_identificación] || selector['id'] || selector[:id] end |
#extras(extras) ⇒ Criteria
Agrega un criterio a Criteria que especifica opciones adicionales que se pasarán al controlador Ruby, en el formato exacto del controlador.
criterios.extras(:limit => 20, :skip => 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>
Obtenga la lista de campos incluidos.
207 208 209 210 211 212 213 |
# Archivo 'lib/mongoid/criteria.rb', línea 207 def lista_de_campos Si [:campos] [:campos].claves.rechazar{ |clave| clave == klass.clave discriminadora } else [] end end |
#find(*args) {|Object| ... } ⇒ Document | Array<Document> | nil
Cada argumento puede ser un ID individual, un array de ID o un array anidado. Cada array 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 a este método no se le asigna un bloque, delega en Findable#find y encuentra uno o muchos documentos para los valores _id proporcionados.
Si se le asigna un bloque a este método, delega a Enumerable#find y devuelve el primer documento de los encontrados por el objeto Crieria actual para el cual el bloque devuelve un valor verdadero.
Tenga en cuenta que Mongoid no trata especialmente el argumento “procedimiento predeterminado” de Enumerable: la decisión entre delegar a Findable o Enumerable se toma únicamente en función de si se le 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 ¿bloque_dado? _hallazgo_enumerable(*args, Ybloque) else _findable_find(*args) end end |
#for_js(javascript, alcance = {}) ⇒ Criterios
Busca documentos según el JavaScript y el alcance proporcionados. Usa un `$where`, pero se diferencia de `Criteria#where` en que pasa un objeto de código a la consulta en lugar de una cadena pura. Es seguro 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, ámbito de aplicación = {}) Código = Si ámbito de aplicación.¿vacío? # CodeWithScope no es compatible con $where a partir de MongoDB 4.4 BSON::Código.Nuevo(JavaScript) else BSON::Código con alcance.Nuevo(JavaScript, ámbito de aplicación) end consulta_js(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 unir(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 = yo.clase.desde_hash(otros) Si otros.is_a?(Picadillo) selector.¡unir!(otros.selector) .¡unir!(otros.) yo.Documentos = otros.Documentos.dup a no ser que otros.Documentos.¿vacío? yo. = otros. yo.inclusiones = (inclusiones + otros.inclusiones).único yo 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 yo end |
#solo(*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 sólo(*args) args = args.aplanar return clon Si args.¿vacío? Si (args Y Campos::Identificación).¿vacío? args.unshift(:_identificación) end Si klass.¿hereditario? args.Push(klass.clave discriminadora.a_sym) end Super(*args) end |
#leer(valor = nulo) ⇒ Criterios
Establezca la preferencia de lectura para los criterios.
333 334 335 336 337 |
# Archivo 'lib/mongoid/criteria.rb', línea 333 def Lea(valor = nulo) clon.grifo hacer |criterios| criterios..¡unir!(leer: valor) end end |
#responder_a?(nombre, incluir_privado = falso) ⇒ verdadero | falso
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) || VER.respond_to?(Nombre, incluir_privado) end |
#to_criteria ⇒ Criteria
Conveniencia para objetos que desean fusionarse según un criterio.
374 375 376 |
# Archivo 'lib/mongoid/criteria.rb', línea 374 def to_criteria yo end |
#to_proc ⇒ Proc
Convertir los criterios en un procedimiento.
385 386 387 |
# Archivo 'lib/mongoid/criteria.rb', línea 385 def to_proc ->{ yo } end |
# tipo(s)⇒ Criterios
Agrega un criterio a Criteria que especifica un tipo o una matriz de tipos que deben coincidir.
399 400 401 |
# Archivo 'lib/mongoid/criteria.rb', línea 399 def tipo(tipos) any_in(yo.clave discriminadora.a_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 donde(*args) # Históricamente, este método requería exactamente un argumento. # A partir de https://jira.mongodb.org/browse/MONGOID-4804 también acepta # zero arguments. # La implementación subyacente donde la superinvocación admite # cualquier número de argumentos, pero actualmente no permitimos varios # argumentos a través de este método. Esta API se puede reconsiderar en el # futuro. Si args.longitud > 1 propagar ArgumentError, "Criterios#donderequiere cero o un argumento (dado #{args.length} )" end Si args.longitud == 1 expresión = args.primera Si expresión.is_a?(::String) && propagar Errors::Javascript no compatible.Nuevo(klass, expresión) end end Super end |
#sin(*args) ⇒ Criterios
Se anuló para excluir _id de los campos.
347 348 349 350 |
# Archivo 'lib/mongoid/criteria.rb', línea 347 def sin(*args) args -= campos de identificación Super(*args) end |
#sin_opciones ⇒ Criterios
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 |