클래스: 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 쿼리 표현식에 값을 매핑하는 절차로 생각할 수 있습니다.

인스턴스 속성 요약 접기

인스턴스 메서드 요약 접기

생성자 세부 정보

#initialize(name, 전략, 연산자, 확장 = nil, &block) ⇒

새 키를 인스턴스화합니다.

예시:

키를 인스턴스화합니다.

Key.new("age", :__override__, "$gt")

정렬을 위해 키를 인스턴스화합니다.

Key.new(:field, :__override__, 1)

매개변수:

  • 이름 (string | 기호)

    필드 이름입니다.

  • 전략 (기호)

    병합 전략의 이름입니다.

  • 연산자 (string | 정수)

    MongoDB 연산자 또는 정렬 방향(1 또는 -1).

  • 확장 (string) (기본값: nil)

    mongo 확장 연산자입니다.



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 (읽기 전용)

값을 변환하는 선택적 차단 을 반환합니다.

반환합니다:

  • (Proc)

    값을 변환하는 선택적 차단입니다.



76
77
78
# 파일 'lib/mongoid/criteria/queryable/key.rb', 줄 76

def 차단
  @ 차단
end

#확장된string (읽기 전용)

반환값 MongoDB 확장 쿼리 연산자.

반환합니다:

  • (string)

    MongoDB 확장 쿼리 연산자.



70
71
72
# 파일 'lib/mongoid/criteria/queryable/key.rb', 줄 70

def 확장
  @expanded
end

#이름string | 기호 (읽기 전용)

필드 의 이름을 반환합니다.

반환합니다:

  • (string | 기호)

    필드의 이름입니다.



64
65
66
# 파일 'lib/mongoid/criteria/queryable/key.rb', 줄 64

def 이름
  @name
end

#연산자string (읽기 전용)

반환 MongoDB 쿼리 연산자.

반환합니다:

  • (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?

키가 다른 객체 와 동일합니까?

예시:

키가 다른 키와 동일합니까?

key == other
key.eql? other

매개변수:

  • 기타 (객체)

    비교할 객체입니다.

반환합니다:

  • (true | false)

    객체가 동일한 경우.



87
88
89
90
# 파일 'lib/mongoid/criteria/queryable/key.rb', 줄 87

def ==(기타)
  반환 거짓 하지 않는 한 기타.is_a?()
  이름 == 기타.이름 && 연산자 == 기타.연산자 && 확장 == 기타.확장
end

#__expr_part__(객체, 부정 = false) ⇒ 해시

이 키에서 mongo 로 전달될 원시 선택기를 가져옵니다.

예시:

원시 선택기를 지정합니다.

key.__expr_part__(50)

매개변수:

  • 객체 (객체)

    포함할 값입니다.

  • 부정 (true | false) (기본값은 false)

    선택을 취소해야 하는 경우.

반환합니다:

  • (해시)

    원시 MongoDB 선택기입니다.



131
132
133
# 파일 'lib/mongoid/criteria/queryable/key.rb', 줄 131

def __expr_part__(객체, 부정 = 거짓)
  { 이름.to_s => 변환 값(객체, 부정) }
end

#__sort_option__해시 __sort_pair__ 라고도

키를 원시 mongo 정렬 옵션으로 가져옵니다.

예시:

키를 정렬로 가져옵니다.

key.__sort_option__

반환합니다:

  • (해시)

    필드/방향 쌍입니다.



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_sstring

키를 string 로 변환합니다.

예시:

키를 string 로 변환합니다.

key.to_s

반환합니다:

  • (string)

    string 로 된 키입니다.



181
182
183
# 파일 'lib/mongoid/criteria/queryable/key.rb', 줄 181

def to_s
  @name.to_s
end

#변환 값 (값, 부정 = false) ⇒ 해시

mongo 에 전달될 원시 선택기 조건을 가져옵니다.

예시:

원시 선택기 조건을 가져옵니다.

key.transform_value(50)

매개변수:

  • value (객체)

    포함할 값입니다.

  • 부정 (true | false) (기본값은 false)

    선택을 취소해야 하는 경우.

반환합니다:

  • (해시)

    원시 MongoDB 선택기입니다.



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