모듈: Mongoid::Matcher Private
- 다음에 정의됨:
- lib/mongoid/matcher.rb,
 lib/mongoid/matcher/eq.rb,
 lib/mongoid/matcher/gt.rb,
 lib/mongoid/matcher/in.rb,
 lib/mongoid/matcher/lt.rb,
 lib/mongoid/matcher/ne.rb,
 lib/mongoid/matcher/or.rb,
 lib/mongoid/matcher/all.rb,
 lib/mongoid/matcher/and.rb,
 lib/mongoid/matcher/gte.rb,
 lib/mongoid/matcher/lte.rb,
 lib/mongoid/matcher/mod.rb,
 lib/mongoid/matcher/nin.rb,
 lib/mongoid/matcher/nor.rb,
 lib/mongoid/matcher/not.rb,
 lib/mongoid/matcher/bits.rb,
 lib/mongoid/matcher/size.rb,
 lib/mongoid/matcher/type.rb,
 lib/mongoid/matcher/regex.rb,
 lib/mongoid/matcher/exists.rb,
 lib/mongoid/matcher/eq_impl.rb,
 lib/mongoid/matcher/elem_match.rb,
 lib/mongoid/matcher/ 표현식.rb,
 lib/mongoid/matcher/bits_all_set.rb,
 lib/mongoid/matcher/bits_any_set.rb,
 lib/mongoid/matcher/bits_all_clear.rb,
 lib/mongoid/matcher/bits_any_clear.rb,
 lib/mongoid/matcher/field_operator.rb,
 lib/mongoid/matcher/field_expression.rb,
 lib/mongoid/matcher/eq_impl_with_regexp.rb,
 lib/mongoid/matcher/expression_operator.rb,
 lib/mongoid/matcher/elem_match_expression.rb
개요
이 모듈은 비공개 API의 일부입니다. 이 모듈은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
MQL 쿼리 표현식과 문서의 인메모리 일치를 수행하는 데 도움이 되는 메서드가 포함된 유틸리티 모듈입니다.
네임스페이스 아래에 정의됨
모듈: 모두, And, Bits, BitsAllClear, BitsAllSet, BitsAnyClear, BitsAnySet, ElemMatch, ElemMatchExpression, Eq, EqImpl, EqImplWithRegexp, Exists, Expression, ExpressionOperator, FieldExpression, FieldOperator , FieldExpression , FieldOperator, Gt , Gt , Nor, Not, Or, Regex, Size, Type
클래스 메서드 요약 접기
- 
  
    
      .extract_attribute(문서, 키) ⇒ 객체 | 배열 
    
    
  
  
  
  
  
  
  
  비공개
  
    문서의 지정된 키에서 필드 값을 추출합니다. 
- 
  
    
      .find_exact_key(해시, 키) ⇒ string | 기호 | nil 
    
    
  
  
  
  
  
  
  
  비공개
  
    무관한 string 또는 기호 키를 조회하여 정확한 키를 반환합니다. 
클래스 메서드 세부 정보
.extract_attribute(문서, 키) ⇒ 객체 | 배열
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
문서의 지정된 키에서 필드 값을 추출합니다.
문서 는 해시 또는 모델 인스턴스 일 수 있습니다.
키는 유효한 MongoDB 점 표기법 키입니다. 지원되는 사용 사례는 다음과 같습니다.
- 
단순 필드 순회('foo') - 현재 문서 에서 'foo' 필드 를 조회합니다. 
- 
해시/ 내장된 문서 필드 순회('foo.bar') - 현재 문서 에서 'foo' 필드 를 검색한 다음 'foo' 값에서 'bar' 필드 를 검색합니다. 각 경로 세그먼트는 내장된 문서 또는 해시 필드 로 구성될 수 있습니다. 
- 
배열 요소 조회('foo.N') - 배열이어야 하는 'foo' 필드에서 N번째 배열 요소를 조회합니다. N은 음수가 아닌 정수여야 합니다. 
- 
배열 순회('foo.bar') - `foo`가 배열 필드 이고 `foo`의 요소가 해시 또는 내장된 문서인 경우 `foo` 배열 의 각 해시에 있는 `bar` 필드 값의 배열 을 반환합니다. 
이 메서드는 일부 문서 의 개별 필드 값 또는 여러 문서의 값 배열 을 반환할 수 있습니다. 지정된 경로의 필드 값이 기본 값의 배열 이기 때문에 배열 이 반환될 수 있습니다(예: 정수) 또는 지정된 경로의 필드 값이 문서 배열 (예: 일대다 포함된 연관 관계)이기 때문에 리프 값은 각 개별 문서 의 스칼라일 수 있습니다. 리프 값이 배열 이고 일대다 연관 관계가 탐색된 경우, 반환 값은 배열 의 배열이 됩니다. 개별 필드 값도 배열 이 될 수 있으며, 이 예시 는 후속 배열 요소 검색 등을 위해 연관 관계 순회와 구분할 수 없으며 이와 동일하게 동작합니다.
| 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | # 파일 'lib/mongoid/matcher.rb', 46줄 module_function def extract_attribute(문서, 키) # 매처 시스템은 여기에도 원자 값을 전송합니다. # 더 복잡한 유형을 일치시키려고 할 때. 이외의 경우 # 문서 또는 해시가 제공되면 로직을 단락시키고 # 빈 배열 반환합니다. 반환 [] 하지 않는 한 문서.is_a?(해시) || 문서.is_a?(문서) # 성능 최적화. 키에 '.'가 포함되지 않은 경우 문자, # 문서 의 직계 속성을 참조해야 합니다. 하지 않는 한 키.포함?('.') 해시 = 문서.response_to?(:attributes) ? 문서.속성 : 문서 키 = find_exact_key(해시, 키) 반환 키 ? [ 해시[키] ] : [] end 만약 문서.response_to?(:as_attributes, true) # 문서 에 해시 필드가 있는 경우 as_attributes는 해당 필드를 유지합니다. # 무관심한 액세스 를 제공하지 않는 해시 인스턴스로 사용됩니다. # BSON::Document로 변환하여 해시 필드에 무관심하게 액세스 합니다. 문서 = 문서.send(:as_attributes) end Current = [문서] 키.to_s.split('.').각 do |필드| 신규 = [] Current.각 do |doc| case doc when 해시 actual_key = find_exact_key(doc, 필드) 만약 !actual_key.nil? 신규 << doc[actual_key] end when 배열 만약 (index = 필드.to_i).to_s == 필드 만약 doc.분량 > index 신규 << doc[index] end end doc.각 do |subdoc| 만약 해시 === subdoc actual_key = find_exact_key(subdoc, 필드) 만약 !actual_key.nil? 신규 << subdoc[actual_key] end end end end end Current = 신규 휴식 만약 Current.비어 있나요? end Current end | 
.find_exact_key(해시, 키) ⇒ string | 기호 | nil
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
무관한 string 또는 기호 키를 조회하여 정확한 키를 반환합니다.
| 108 109 110 111 112 113 114 | # 파일 'lib/mongoid/matcher.rb', 108줄 module_function def find_exact_key(해시, 키) key_s = 키.to_s 반환 key_s 만약 해시.키?(key_s) key_sym = 키.to_sym 해시.키?(key_sym) ? key_sym : nil end |