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?(_exists, valor, condição) ➤ true | falso, 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)


18
19
20
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
# File 'lib/mongoid/matcher/elem_match.rb', linha 18

module_function def correspondências?(_exists, valor, Condição)
  a menos que Condição.is_a?(Hash)
    aumentar Errors::Query inválida, "$elemMatch requer um operando de Hash: #{Erros::InvalidQuery.truncate_expr(condição)}"
  end

  se valor.is_a?(Array) && !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
      próximo a menos que 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
    false
  end
end