클래스: Mongoid::Criteria::Queryable::Key
- 상속:
-
객체
- 객체
- Mongoid::Criteria::Queryable::Key
- 다음에 정의됨:
- lib/mongoid/criteria/queryable/key.rb
개요
키 객체는 MongoDB 선택기를 활용하여 쿼리 표현식을 작성하기 위한 사양을 나타냅니다.
간단한 키-값 조건은 키 객체를 사용하지 않고 Mongoid에 의해 표현식 해시로 직접 변환됩니다. 예를 들어 다음과 같은 조건이 있습니다.
Foo.where(price: 1)
... 는 다음과 같은 간단한 표현식 으로 변환됩니다.
{price: 1}
더 복잡한 조건은 키 객체와 관련되기 시작합니다. 예를 예시 다음과 같습니다.
Foo.where(:price.gt => 1)
...를 입력하면 다음과 같이 키 인스턴스가 생성됩니다.
Key.new(:price, :__override__, '$gt')
이 키 인스턴스 는 operator
을 사용하지만 expanded
또는 block
는 사용하지 않습니다. 해당 MongoDB 쿼리 표현식 은 다음과 같습니다.
{price: {'$gt' => 1}}
훨씬 더 복잡한 예는 다음 조건입니다.
Foo.geo_spatial(:boundary.intersects_point => [1, 10])
이 조건을 처리하면 다음과 같이 키 인스턴스 가 생성됩니다.
Key.new(:location, :__override__, '$geoIntersects', '$geometry') do |value|
{ "type" => POINT, "coordinates" => value }
end
... 최종적으로 다음과 같은 MongoDB 쿼리 표현식 을 생성합니다.
{
boundary: {
'$geoIntersects' => {
'$geometry' => {
type: "Point" ,
coordinates: [ 1, 10 ]
}
}
}
}
키 인스턴스는 주어진 값에서 키의 조건을 얻는 데 필요한 MongoDB 쿼리 표현식에 값을 매핑하는 절차로 생각할 수 있습니다.
인스턴스 속성 요약 접기
-
#block ⇒ Proc
읽기 전용
값을 변환하는 선택적 차단입니다.
-
#확장 ⇒ string
읽기 전용
MongoDB 확장 쿼리 연산자.
-
#이름 ⇒ string | 기호
읽기 전용
필드의 이름입니다.
-
#연산자 ⇒ string
읽기 전용
MongoDB 쿼리 연산자입니다.
-
#전략 ⇒ 기호
읽기 전용
병합 전략의 이름입니다.
인스턴스 메서드 요약 접기
-
#==(기타) ⇒ true | false (동의어: #eql?)
키가 다른 객체 와 동일합니까?
-
#__expr_part__(객체, 부정 = false) ⇒ 해시
이 키에서 mongo 로 전달될 원시 선택기를 가져옵니다.
-
#__sort_option__ ⇒ 해시 (동의어: #__sort_pair__)
키를 원시 mongo 정렬 옵션으로 가져옵니다.
-
#해시 ⇒ 정수
키의 해시 코드를 계산합니다.
-
#initialize(name, 전략, 연산자, 확장 = nil, &block) ⇒ 키
생성자
새 키를 인스턴스화합니다.
-
#to_s ⇒ string
키를 string 로 변환합니다.
-
#변환 값 (값, 부정 = false) ⇒ 해시
mongo 에 전달될 원시 선택기 조건을 가져옵니다.
생성자 세부 정보
#initialize(name, 전략, 연산자, 확장 = nil, &block) ⇒ 키
새 키를 인스턴스화합니다.
113 114 115 116 117 118 119 120 |
# 파일 'lib/mongoid/criteria/queryable/key.rb', 줄 113 def 초기화(이름, 전략, 연산자, = nil, &차단) 하지 않는 한 연산자.is_a?(문자열) || 연산자.is_a?(Integer) 올리다 ArgumentError, "연산자는 string 또는 정수여야 합니다: #{연산자.검사}" end @name, @strategy, @ 연산자, @expanded, @ 차단 = 이름, 전략, 연산자, , 차단 end |
인스턴스 속성 세부 정보
#차단 ⇒ Proc (읽기 전용)
값을 변환하는 선택적 차단 을 반환합니다.
76 77 78 |
# 파일 'lib/mongoid/criteria/queryable/key.rb', 줄 76 def 차단 @ 차단 end |
#확장된 ⇒ string (읽기 전용)
반환값 MongoDB 확장 쿼리 연산자.
70 71 72 |
# 파일 'lib/mongoid/criteria/queryable/key.rb', 줄 70 def @expanded end |
#이름 ⇒ string | 기호 (읽기 전용)
필드 의 이름을 반환합니다.
64 65 66 |
# 파일 'lib/mongoid/criteria/queryable/key.rb', 줄 64 def 이름 @name end |
#연산자 ⇒ string (읽기 전용)
반환 MongoDB 쿼리 연산자.
67 68 69 |
# 파일 'lib/mongoid/criteria/queryable/key.rb', 줄 67 def 연산자 @ 연산자 end |
#전략 ⇒ 기호 (읽기 전용)
병합 전략의 이름을 반환합니다.
73 74 75 |
# 파일 'lib/mongoid/criteria/queryable/key.rb', 줄 73 def 전략 @strategy end |
인스턴스 메서드 세부 정보
#==(기타) ⇒ true | false ~라고도 함: eql?
키가 다른 객체 와 동일합니까?
87 88 89 90 |
# 파일 'lib/mongoid/criteria/queryable/key.rb', 줄 87 def ==(기타) 반환 거짓 하지 않는 한 기타.is_a?(키) 이름 == 기타.이름 && 연산자 == 기타.연산자 && == 기타. end |
#__expr_part__(객체, 부정 = false) ⇒ 해시
이 키에서 mongo 로 전달될 원시 선택기를 가져옵니다.
131 132 133 |
# 파일 'lib/mongoid/criteria/queryable/key.rb', 줄 131 def __expr_part__(객체, 부정 = 거짓) { 이름.to_s => 변환 값(객체, 부정) } end |
#__sort_option__ ⇒ 해시 __sort_pair__ 라고도 함
키를 원시 mongo 정렬 옵션으로 가져옵니다.
170 171 172 |
# 파일 'lib/mongoid/criteria/queryable/key.rb', 줄 170 def __sort_option__ { 이름 => 연산자 } end |
#해시 ⇒ 정수
키의 해시 코드를 계산합니다.
96 97 98 |
# 파일 'lib/mongoid/criteria/queryable/key.rb', 줄 96 def 해시 [이름, 연산자, ].해시 end |
#to_s ⇒ string
키를 string 로 변환합니다.
181 182 183 |
# 파일 'lib/mongoid/criteria/queryable/key.rb', 줄 181 def to_s @name.to_s end |
#변환 값 (값, 부정 = false) ⇒ 해시
mongo 에 전달될 원시 선택기 조건을 가져옵니다.
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 |
# 파일 'lib/mongoid/criteria/queryable/key.rb', 줄 144 def 변환 값(value, 부정 = 거짓) 만약 차단 expr = 차단[value] other expr = value end 만약 expr = { => expr} end expr = {연산자 => expr} 만약 부정 && 연산자 != '$not' expr = {'$not' => expr} end expr end |