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

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

Visão geral

Este módulo faz parte de uma API privada. Você deve evitar usar este módulo, se possível, pois ele pode ser removido ou alterado no futuro.

Correspondente na memória para a expressão$elemMatch .

Recolhimento do Resumo do método de classe

Detalhes do método de classe

.correspondências?(existe, valor, condição) ➤ verdadeiro | false, booleano

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna se um valor satisfaz uma expressão$elemMatch .

Parâmetros:

  • existe (verdadeiro | falso)

    Não usado.

  • valor (Object | Array<Object>)

    O valor a ser verificado.

  • expr (Hash)

    O predicado da condição $elemMatch.

Retorna:

  • (verdadeiro | falso)

    Se o valor corresponde.

  • (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
# File 'lib/mongoid/matcher/elem_match.rb', linha 21

module_function def correspondências?(existe, valor, Condição)
  a menos que Hash === Condição
    aumentar Errors::Query inválida, "$elemMatch requer um operando de Hash: #{Erros::InvalidQuery.truncate_expr(condição)}"
  end
  se Array === valor && !valor.vazio?
    valor.algum? fazer |v|
      ElemMatchExpression.correspondências?(v, Condição)
    end
  mais
    # Validar que a condição é válida, embora nunca tentemos
    # correspondendo a ele.
    Condição.cada fazer |k, v|
      k = k.to_s
      se k.start_with?('$')
        começar
          ExpressionOperator.obter(k)
        salvar Mongoid::Errors::InvalidExpressionOperator
          começar
            FieldOperator.obter(k)
          salvar Mongoid::Errors::Operador de campo inválido => exc
            aumentar Mongoid::Errors::InvalidElemMatchOperator.Novo(exc.operador, operador)
          end
        end
      end
    end
    false
  end
end