Módulo: Mongoid::Matcher::ElemMatch Privado

Definido en:
lib/mongoid/matcher/elem_match.rb

Overview

Este módulo forma parte de una API privada. Debe evitar su uso siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.

Comparador en memoria para la expresión $elemMatch.

Resumen del método de clase colapsar

Detalles del método de clase

.¿coincide?(existe, valor, condición) ⇒ verdadero | falso, booleano

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve si un valor cumple con una expresión $elemMatch.

Parámetros:

  • exists (true | false)

    No se utiliza.

  • Valor (objeto |<Object> arreglo)

    El valor a comprobar.

  • expr (encriptada)

    El predicado de la condição $elemMatch.

Devuelve:

  • (true | false)

    Si el valor coincide.

  • (booleano)


21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# Archivo 'lib/mongoid/matcher/elem_match.rb', línea 21

module_function def coincide?(exists, Valor, condición)
  a menos que Picadillo === condición
    propagar Errors::Consulta no válida, "$elemMatch requiere un operando Hash: #{Errores::ConsultaInválida.truncate_expr(condición)}"
  end
  si Arreglo === Valor && !Valor.¿vacío?
    Valor.any? hacer |v|
      ElemMatchExpression.coincide?(v, condición)
    end
  else
    # Valide que la condición sea válida, aunque nunca lo intentaremos
    # coindidiendolo.
    condición.cada hacer |k, v|
      k = k.to_s
      si k.start_with?('$')
        begin
          Operador de expresión.Obtener(k)
        rescate Mongoid::Errors::InvalidExpressionOperator
          begin
            Operador de campo.Obtener(k)
          rescate Mongoid::Errors::OperadorDeCampoNoVálido => Excª
            propagar Mongoid::Errors::InvalidElemMatchOperator.Nuevo(Excª.operador)
          end
        end
      end
    end
    false
  end
end