Módulo: Mongoid::Criteria::Queryable::Selectable
- Ampliado por:
- Macrosable
- Definido en:
- lib/mongoid/criteria/queryable/selectable.rb
Overview
Un seleccionable consultable es seleccionable, en el sentido de que tiene la capacidad de seleccionar documentos de la base de datos. El módulo seleccionable lleva toda la funcionalidad al elemento seleccionable que tiene que ver con la creación de selectores MongoDB.
Colapso delresumen constante
- CADENA DE LÍNEA =
Constante para una geometría LineString.
"LineString"- punto =
Constante para una geometría de Punto ($geometry).
"punto"- polígono =
Constante para una $geometry Polígono.
"polígono"
Resumen de atributos de la instancia colapsar
-
#negando ⇒ Objeto
Devuelve el valor del atributo negando.
- #Negando si la siguiente expresión está negada.(Ifthe) ⇒ Object
-
#selector ⇒ Objeto
Devuelve el valor del selector del atributo.
- #selector El selector de query.(El selector de query.) ⇒ Objeto
Resumen del método de clase colapsar
-
.transmitibles ⇒ Array<Symbol>
Obtenga los métodos en el seleccionable que se pueden reenviar desde un modelo.
Resumen del método de instancia colapsar
-
#todos(*criterio) ⇒ Seleccionable (también: #todos_en)
Agrega el criterio $all.
-
#y(*criterios) ⇒ Seleccionable (también: #all_of)
Agrega el criterio $and.
-
#any_of(*criterios) ⇒ Seleccionable
Añade una disyunción de los argumentos como una restricción adicional a los criterios ya existentes en el receptor.
-
#entre(criterio) ⇒ Seleccionable
Agrega la selección de rango.
-
#elem_match(criterio) ⇒ Seleccionable
Selecciona con un $elemMatch.
-
#eq(criterion) ⇒ Seleccionable
Añade el criterio $eq al selector.
-
#existe(criterio) ⇒ Seleccionable
Agregue la selección $exists.
-
#geo_espacial(criterio) ⇒ Seleccionable
Añada una selección $geoIntersects o $geoWithin.
-
#gt(criterio) ⇒ Seleccionable
Agregar el criterio $gt al selector.
-
#gte(criterio) ⇒ Seleccionable
Agrega el criterio $gte al selector.
-
#in(condition) ⇒ Selectable (también: #any_in)
Agrega la selección $in a lo seleccionable.
-
#lt(criterio) ⇒ Seleccionable
Agrega el criterio $lt al selector.
-
#lte(criterio) ⇒ Seleccionable
Agregue el criterio $lte al selector.
-
#max_distance(criterio) ⇒ Seleccionable
Agrega una selección $maxDistance al seleccionable.
-
#mod(criterio) ⇒ Seleccionable
Agrega la selección $mod al elemento seleccionable.
-
#ne(criterio) ⇒ Seleccionable (también: #excluye)
Agrega la selección $ne a las opciones seleccionables.
-
#near(criterio) ⇒ Selectable
Añade un criterio $near a una selección geográfica.
-
#near_sphere(criterio) ⇒ Seleccionable
Agrega un criterio $nearSphere a una selección geográfica.
-
#¿negando? ⇒ verdadero | falso
¿El elemento seleccionable actual niega la siguiente selección?
-
#nin(condición) ⇒ Seleccionable (también: #not_in)
Agrega la selección $nin al elemento seleccionable.
-
#none_of(*criteria) ⇒ Seleccionable
Negar los argumentos, limitando la query solo a aquellos documentos que NO coincidan con los argumentos.
-
#nor(*criterios) ⇒ Seleccionable
Agrega la selección $nor a lo seleccionable.
-
#no(*criterios) ⇒ Seleccionable
Negar los argumentos o la siguiente selección si no se dan argumentos.
-
#o(*criterios) ⇒ Seleccionable
Crea una disyunción utilizando $or a partir de los criterios existentes en el receptor y los argumentos proporcionados.
-
#text_search(términos, opts = nulo) ⇒ Seleccionable
Construya un selector de búsqueda de texto.
-
#where(*criteria) ⇒ Selectable
Este es el punto de acceso general para la mayoría de las consultas de MongoDB.
-
#with_size(criterio) ⇒ Seleccionable
Agregar una selección de $size para los campos de arreglo.
-
#with_type(criterio) ⇒ Selectable
Agrega una selección de $type a lo seleccionable.
Métodos incluidos en Macroable
Detalles de los atributos de instancia
#negando ⇒ objeto
Devuelve el valor del atributo negando.
25 26 27 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 25 def negar @negando end |
#negación Si la siguiente expresión está negada.(Ifthe) ⇒ objeto
25
|
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 25 attr_accessor :negando, :selector |
#selector ⇒ Objeto
Devuelve el valor del selector del atributo.
25 26 27 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 25 def selector @selector end |
#selector El selector de query.(El selector de query.) ⇒ objeto
25
|
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 25 attr_accessor :negando, :selector |
Detalles del método de clase
.forwardables ⇒ arreglo<Symbol>
Obtenga los métodos en el seleccionable que se pueden reenviar desde un modelo.
945 946 947 948 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 945 def reenviables public_instance_methods(false) - [ :negando, :negando=, :¿negando?, :selector, selector= ] end |
Detalles del método de instancia
#all(*criteria) ⇒ Seleccionable También conocido como: all_in
Agrega el criterio $all.
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 38 def Todo(*criterios) si criterios.¿vacío? return clon.tocar hacer |Consulta| Consulta.reset_strategies! end end criterios.inyectar(clon) hacer |Consulta, condición| si condición.nil? propagar Errors::CriteriaArgumentRequired, todo end condición = (condición) si estrategia enviar(estrategia, condición, "$all") else condición.inyectar(Consulta) hacer |query, (Campo, Valor)| v = {'$all' => Valor} si ¿negando? v = {' $no ' => v} end query.add_field_expression(Campo.to_s, v) end end end.reset_strategies! end |
#y(*criterios) ⇒ Selectable También conocido como: all_of
Agrega el criterio $and.
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 78 def y (*criterios) _mongoid_flatten_arrays(criterios).inyectar(sí mismo.clon) hacer |C, nueva| si nueva.is_a?(Seleccionable) nueva = nueva.selector end normalizado = (nueva) normalizado.cada hacer |k, v| k = k.to_s si C.selector[k] #Ya existe una condición en k. # Si v es un operador y todas las condiciones existentes son # también los operadores, y v no está presente en las condiciones existentes, # podemos añadir a las condiciones existentes. # De lo contrario, use $and. si v.is_a?(Picadillo) && v.longitud == 1 && (nuevo_k = v.claves.primero).start_with?('$') && (existing_kv = C.selector[k]).is_a?(Picadillo) && !existing_kv.key?(nuevo_k) && existing_kv.claves.¿todos? { |sub_k| sub_k.start_with?('$') } entonces fusionado_v = C.selector[k].fusionar(v) C.selector.store(k, fusionado_v) else C = C.enviar(:__multi__, [k => v], '$and') end else C.selector.store(k, v) end end C end end |
#any_of(*criteria) ⇒ Selectable
Añade una disyunción de los argumentos como una restricción adicional a los criterios ya existentes en el receptor.
Utiliza or para hacer que el receptor sea uno de los operanlos de disyunción.
Cada argumento puede ser un Hash, un objeto Criteria, un arreglo de Hash o de objetos Criteria, o un arreglo anidado. Los arreglos anidados se aplanarán y pueden tener cualquier profundidad. El traspaso de arreglos está obsoleto.
674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 674 def any_of(*criterios) criterios = _mongoid_flatten_arrays(criterios) caso criterios.longitud Cuando 0 clon Cuando 1 # Cuando tenemos un solo criterio, any_of se comporta como and. # Nota: los criterios pueden ser un objeto de consulta, lo cual no hace el método where. # no soporte. sí mismo.y (*criterios) else # Cuando tenemos varios criterios, los combinamos todos con $or # y añade el resultado a sí mismo. expresiones = criterios.map hacer |criterion| si criterion.is_a?(Seleccionable) (criterion.selector) else Picadillo[criterion.map hacer |k, v| si k.is_a?(Símbolo) [k.to_s, v] else [k, v] end end] end end sí mismo.y ('$o ' => expresiones) end end |
#between(criterio) ⇒ Seleccionable
Agrega la selección de rango.
124 125 126 127 128 129 130 131 132 133 134 135 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 124 def entre(criterion) si criterion.nil? propagar Errors::CriteriaArgumentRequired, Entre end selección(criterion) hacer |selector, Campo, Valor| selector.store( Campo, { "$gte" => Valor.min, "$lte" => Valor.máximo } ) end end |
#elem_match(criterio) ⇒ Seleccionable
Selecciona con un $elemMatch.
154 155 156 157 158 159 160 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 154 def elem_match(criterion) si criterion.nil? propagar Errors::CriteriaArgumentRequired, elem_match end y_with_operator(criterion, "$elemMatch") end |
#eq(criterio) ⇒ Selectable
Añade el criterio $eq al selector.
257 258 259 260 261 262 263 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 257 def eq(criterion) si criterion.nil? propagar Errors::CriteriaArgumentRequired, :eq end y_with_operator(criterion, "$eq") end |
#exists(criterion) ⇒ Seleccionable
Agregue la selección $exists.
177 178 179 180 181 182 183 184 185 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 177 def exists(criterion) si criterion.nil? propagar Errors::CriteriaArgumentRequired, existe end typed_override(criterion, "$existe") hacer |Valor| Mongoid::Booleano.evolucionar(Valor) end end |
#geo_spatial(criterio) ⇒ Seleccionable
Las únicas formas geométricas válidas para un $geoIntersects son::intersects_line, :intersects_point y :intersects_polygon.
Las únicas opciones válidas para una consulta $geoWithin son la forma de la geometría :within_polygon y el operador :within_box.
El operador :within_box de la consulta $geoWithin requiere el par de coordenadas inferior izquierda (suroeste) como primer argumento y el superior derecha (noreste) como segundo. Importante: Al pasar la latitud y la longitud, se espera que la longitud sea el primer elemento del par de coordenadas. Fuente: www.mongodb.com/es/docs/manual/reference/operator/query/box
Agregue una selección $geoIntersects o $geoWithin. Para expandir los criterios, utilice los operadores de símbolo como se muestra en los ejemplos.
224 225 226 227 228 229 230 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 224 def geo_spatial(criterion) si criterion.nil? propagar Errors::CriteriaArgumentRequired, geo_spatial end __merge__(criterion) end |
#gt(criterio) ⇒ Seleccionable
Agregar el criterio $gt al selector.
277 278 279 280 281 282 283 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 277 def gt(criterion) si criterion.nil? propagar Errors::CriteriaArgumentRequired, :gt end y_with_operator(criterion, "$gt") end |
#gte(criterio) ⇒ Seleccionable
Agrega el criterio $gte al selector.
297 298 299 300 301 302 303 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 297 def gte(criterion) si criterion.nil? propagar Errors::CriteriaArgumentRequired, :gte end y_with_operator(criterion, "$gte") end |
#en(condición) ⇒ Seleccionable También conocido como: cualquiera_en
Agrega la selección $in a lo seleccionable.
320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 320 def in(condición) si condición.nil? propagar Errors::CriteriaArgumentRequired, :en end condición = (condición) si estrategia enviar(estrategia, condición, "$in") else condición.inyectar(clon) hacer |Consulta, (Campo, Valor)| v = {'$in' => Valor} si ¿negando? v = {' $no ' => v} end Consulta.add_field_expression(Campo.to_s, v) end.reset_strategies! end end |
#lt(criterio) ⇒ Seleccionable
Agrega el criterio $lt al selector.
353 354 355 356 357 358 359 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 353 def es(criterion) si criterion.nil? propagar Errors::CriteriaArgumentRequired, :lt end y_with_operator(criterion, "$lt") end |
#lte(criterio) ⇒ Seleccionable
Agregue el criterio $lte al selector.
373 374 375 376 377 378 379 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 373 def lte(criterion) si criterion.nil? propagar Errors::CriteriaArgumentRequired, :lte end y_with_operator(criterion, "$lte") end |
#max_distance(criterio) ⇒ Seleccionable
Agrega una selección $maxDistance al seleccionable.
390 391 392 393 394 395 396 397 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 390 def max_distance(criterion) si criterion.nil? propagar Errors::CriteriaArgumentRequired, distancia máxima end # $maxDistance debe darse junto con $near __add__(criterion, "$maxDistance") end |
#mod(criterio) ⇒ Seleccionable
Agrega la selección $mod al elemento seleccionable.
410 411 412 413 414 415 416 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 410 def mod(criterion) si criterion.nil? propagar Errors::CriteriaArgumentRequired, :mod end y_with_operator(criterion, "$mod") end |
#no es igual(criterio) ⇒ Seleccionable También conocido como: excluye
Agrega la selección $ne a las opciones seleccionables.
430 431 432 433 434 435 436 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 430 def ne(criterion) si criterion.nil? propagar Errors::CriteriaArgumentRequired, :ne end y_with_operator(criterion, "$ne") end |
#cerca(criterio) ⇒ Seleccionable
Añade un criterio $near a una selección geográfica.
451 452 453 454 455 456 457 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 451 def near(criterion) si criterion.nil? propagar Errors::CriteriaArgumentRequired, cerca de end y_with_operator(criterion, "$cerca") end |
#near_sphere(criterio) ⇒ Seleccionable
Agrega un criterio $nearSphere a una selección geográfica.
471 472 473 474 475 476 477 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 471 def cerca_de_la_esfera(criterion) si criterion.nil? propagar Errors::CriteriaArgumentRequired, :near_sphere end y_with_operator(criterion, "$nearSphere") end |
#¿negando? ⇒ true | false
¿El elemento seleccionable actual está negando la siguiente selección?
535 536 537 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 535 def ¿negando? !!negar end |
#nin(condición) ⇒ Selectable También conocido como: not_in
Agrega la selección $nin al elemento seleccionable.
494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 494 def nin(condición) si condición.nil? propagar Errors::CriteriaArgumentRequired, :nin end condición = (condición) si estrategia enviar(estrategia, condición, "$nin") else condición.inyectar(clon) hacer |Consulta, (Campo, Valor)| v = {'$nin' => Valor} si ¿negando? v = {' $no ' => v} end Consulta.add_field_expression(Campo.to_s, v) end.reset_strategies! end end |
#none_of(*criteria) ⇒ Selectable
Negar los argumentos, limitando la query solo a aquellos documentos que NO coincidan con los argumentos.
601 602 603 604 605 606 607 608 609 610 611 612 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 601 def none_of(*criterios) criterios = _mongoid_flatten_arrays(criterios) return dup si criterios.¿vacío? expresiones = criterios.map hacer |criterion| ( criterion.is_a?(Seleccionable) ? criterion.selector : criterion) end sí mismo.y ('$nor' => expresiones) end |
#ni(*criterios) ⇒ Seleccionable
Agrega la selección $nor a lo seleccionable.
525 526 527 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 525 def ni(*criterios) _mongoid_add_operación_de_nivel_superior('$nor', criterios) end |
#no(*criterios) ⇒ Seleccionable
Negar los argumentos o la siguiente selección si no se dan argumentos.
554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 554 def no(*criterios) si criterios.¿vacío? dup.tocar { |Consulta| Consulta.negar = !Consulta.negar } else criterios.compact.inyectar(sí mismo.clon) hacer |C, nueva| si nueva.is_a?(Seleccionable) nueva = nueva.selector end (nueva).cada hacer |k, v| k = k.to_s si C.selector[k] || k.start_with?('$') C = C.enviar(:__multi__, [{'$nor' => [{k => v}]}], '$and') else si v.is_a?(Picadillo) C = C.enviar(:__multi__, [{'$nor' => [{k => v}]}], '$and') else si v.is_a?(Regexp) operador_negado = ' $no ' else operador_negado = '$ne' end C = C.enviar(:__override__, {k => v}, operador_negado) end end end C end end end |
#o(*criterio) ⇒ Seleccionable
Crea una disyunción utilizando $or a partir de los criterios existentes en el receptor y los argumentos proporcionados.
Este comportamiento (el receptor se convierte en uno de los operandos de disyunción) coincide con el comportamiento or de ActiveRecord.
Use any_of para agregar una disyunción de los argumentos como una restricción adicional a los criterios ya existentes en el receptor.
Cada argumento puede ser un Hash, un objeto Criteria, un arreglo de Hash o de objetos Criteria, o un arreglo anidado. Los arreglos anidados se aplanarán y pueden tener cualquier profundidad. El traspaso de arreglos está obsoleto.
644 645 646 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 644 def or(*criterios) _mongoid_add_operación_de_nivel_superior('$o ', criterios) end |
#text_search(términos, opts = nil) ⇒ Selectable
Por www.mongodb.com/es/docs/manual/reference/operator/query/text/ actualmente no es posible suministrar múltiples condiciones de búsqueda de texto en una query. Mongoid construirá una query de este tipo, pero el servidor devolverá un error al intentar ejecutarla.
Construya un selector de búsqueda de texto.
776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 776 def text_search(término, opta = nulo) si término.nil? propagar Errors::CriteriaArgumentRequired, término end clon.tocar hacer |Consulta| criterion = {'$text' => { '$search' => término }} criterion['$text'].¡unir!(opta) si opta si Consulta.selector['$text'] # Según https://www.mongodb.com/es/docs/manual/reference/operator/query/text/ # actualmente no se admiten múltiples expresiones $text # Servidor MongoDB, pero construye la query correctamente en lugar de # sobrescribiendo la condición de búsqueda de texto anterior con la actual # dado uno. Mongoid.logger.advertencia('El servidor actualmente no admite múltiples expresiones $text por query') Consulta.selector = {'$and' => [Consulta.selector]}.fusionar(criterion) else Consulta.selector = Consulta.selector.fusionar(criterion) end end end |
#donde(*criterios) ⇒ Seleccionable
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.
812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 812 def dónde(*criterios) criterios.inyectar(clon) hacer |Consulta, criterion| si criterion.nil? propagar Errors::CriteriaArgumentRequired, dónde end # Necesitamos guardar el criterio en una variable de instancia, así que # Los métodos modificables saben cómo crear un objeto polimórfico. # Tenga en cuenta que este método, en principio, acepta múltiples criterios, # pero solo el primero se almacenará en @criterion. Esto # funciona bien porque los métodos first_or_create etc. # especifica sólo un criterio para #where. @criterion = criterion si criterion.is_a?(String) js_query(criterion) else consulta_expr(criterion) end end.reset_strategies! end |
#with_size(criterio) ⇒ Seleccionable
Este método se llama #with_size para no entrar en conflicto con ningún método #size existente en contenedores o símbolos.
Agregar una selección de $size para los campos de arreglo.
718 719 720 721 722 723 724 725 726 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 718 def con_tamaño(criterion) si criterion.nil? propagar Errors::CriteriaArgumentRequired, con tamaño end typed_override(criterion, "$size") hacer |Valor| ::entero.evolucionar(Valor) end end |
#with_type(criterio) ⇒ Seleccionable
vurl.me/PGOU contiene una lista de todos los tipos.
Agrega una selección de $type a lo seleccionable.
744 745 746 747 748 749 750 751 752 |
# Archivo 'lib/mongoid/criteria/queryable/selectable.rb', línea 744 def con_tipo(criterion) si criterion.nil? propagar Errors::CriteriaArgumentRequired, con_tipo end typed_override(criterion, "$tipo") hacer |Valor| ::entero.evolucionar(Valor) end end |