모듈: Mongoid::Matcher::ElemMatch Private

다음에 정의됨:
lib/mongoid/matcher/elem_match.rb

개요

이 모듈은 비공개 API의 일부입니다. 이 모듈은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

$elemMatch 표현식 에 대한 인메모리 매처입니다.

클래스 메서드 요약 접기

클래스 메서드 세부 정보

.일치합니까?(_exists, 값, 조건) ⇒ true | false, 부울

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

값이 $elemMatch 표현식 을 충족하는지 여부를 반환합니다.

매개변수:

  • 이 존재합니다 (true | false)

    사용되지 않습니다.

  • value (Object | Array<Object>)

    확인할 값입니다.

  • expr (해시)

    $elemMatch 조건 술어입니다.

반환합니다:

  • (true | false)

    값이 일치하는지 여부입니다.

  • (부울)


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
# 파일 'lib/mongoid/matcher/elem_match.rb', 줄 18

module_function def 일치합니까?(_exists, value, 조건)
  하지 않는 한 조건.is_a?(해시)
    올리다 오류::InvalidQuery, "$elemMatch 에는 해시 피연산자가 필요합니다: #{Errors::InvalidQuery.truncate_expr(condition)}"
  end

  만약 value.is_a?(배열) && !value.비어 있나요?
    value.어떤? do |v|
      ElemMatchExpression.일치합니까?(v, 조건)
    end
  other
    # 시도하지 않더라도 조건이 유효한지 확인합니다.
    # 일치시킵니다.
    조건. do |k, _v|
      k = k.to_s
      다음 하지 않는 한 k.start_with?('$')

      시작
        ExpressionOperator.get(k)
      구출 몽고이드::오류::InvalidExpressionOperator
        시작
          FieldOperator.get(k)
        구출 몽고이드::오류::InvalidFieldOperator => exc
          올리다 몽고이드::오류::InvalidElemMatchOperator.신규(exc.연산자)
        end
      end
    end
    거짓
  end
end