모듈: Mongoid::Criteria::Queryable::Selectable

확장자:
매크로 가능
다음에 정의됨:
lib/mongoid/criteria/queryable/selectable.rb

개요

쿼리 가능 선택 가능 항목은 데이터베이스 에서 문서 를 선택할 수 있다는 기능 에서 선택 가능합니다. 선택 가능 모듈은 MongoDB 선택기 구축과 관련된 선택 가능 항목에 모든 기능을 제공합니다.

상수 요약 접기

LINE_STRING =

라인스트링 $geometry에 대한 상수입니다.

'라인스트링'
POINT =

포인트 $geometry에 대한 상수입니다.

''
POLYGON =

다각형 $geometry에 대한 상수입니다.

'다각형'

인스턴스 속성 요약 접기

클래스 메서드 요약 접기

인스턴스 메서드 요약 접기

매크로 가능에 포함된 메서드

인스턴스 속성 세부 정보

#부정객체

속성 부정의 값을 반환합니다.



23
24
25
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 23

def 부정
  @negating
end

#부정(negating) 다음 표현식 이 부정되는 경우.(Ifthe) ⇒ 객체



23
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 23

attr_accessor :negating, :selector

#선택기객체

속성 선택기의 값을 반환합니다.



23
24
25
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 23

def 선택기
  @selector
end

#선택기 쿼리 선택기입니다.(queryselector.) ⇒ 객체



23
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 23

attr_accessor :negating, :selector

클래스 메서드 세부 정보

.포워더블Array<Symbol>

모델에서 전달할 수 있는 선택 가능한 항목의 메서드를 가져옵니다.

예시:

전달 가능한 메서드를 가져옵니다.

Selectable.forwardables

반환합니다:

  • (Array<Symbol>)

    전달 가능한 메서드의 이름입니다.



883
884
885
886
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 883

def 포워더블
  public_instance_methods(거짓) -
    %i[부정 부정= 부정? 선택기 선택기=]
end

인스턴스 메서드 세부 정보

#all(*criteria) ⇒ Selectable ~ 라고도 함: all_in

$all 기준을 추가합니다.

예시:

기준을 추가합니다.

selectable.all(field: [ 1, 2 ])

where 쿼리에서 $all을 실행합니다.

selectable.where(:field.all => [ 1, 2 ])

매개변수:

  • *기준 (해시...)

    $all 일치에 대한 키 값 쌍입니다.

반환합니다:



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 36

def 모두(*기준)
  만약 기준.비어 있나요?
    반환 복제. do |쿼리|
      쿼리.reset_strategies!
    end
  end

  기준.주입(복제) do |쿼리, 조건|
    올리다 오류::CriteriaArgumentRequired, :all 만약 조건.nil?

    조건 = Expand_condition_to_array_values(조건)

    만약 전략
      send(전략, 조건, '$all')
    other
      조건.주입(쿼리) do |_query, (필드, value)|
        v = { '$all' => value }
        v = { '$not' => v } 만약 부정?
        _query.add_field_expression(필드.to_s, v)
      end
    end
  end.reset_strategies!
end

#(*criteria) ⇒ 선택 가능 ~ 라고도 함: all_of

$and 기준을 추가합니다.

예시:

기준을 추가합니다.

selectable.and({ field: value }, { other: value })

매개변수:

  • *기준 ([ 해시 | 기준 | Array<해시 | 기준> ]...)

    여러 키/값 쌍 일치 항목 또는 결과를 반환하기 위해 모두 일치해야 하는 기준 객체입니다.

반환합니다:



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
101
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 72

def 개인정보 정책에(*기준)
  _mongoid_flatten_arrays(기준).주입(복제) do |C, new_s|
    new_s = new_s.선택기 만약 new_s.is_a?(선택 가능)
    정규화 = _mongoid_expand_keys(new_s)
    정규화. do |k, v|
      k = k.to_s
      만약 C.선택기[k]
        # k에 이미 조건이 있습니다.
        # v가 연산자이고 모든 기존 조건이 다음과 같은 경우
        # 연산자도 있고 기존 조건에는 v 가 없습니다.
        # 기존 조건에 추가할 수 있습니다.
        # 그렇지 않으면 $and를 사용합니다.
        만약 v.is_a?(해시) &&
           v.분량 == 1 &&
           (new_k = v..first).start_with?('$') &&
           (기존_kv = C.선택기[k]).is_a?(해시) &&
           !기존_kv.키?(new_k) &&
           기존_kv..모두? { |sub_k| sub_k.start_with?('$') }
          병합된_v = C.선택기[k].merge(v)
          C.선택기.저장(k, 병합된_v)
        other
          C = C.send(:__multi__, [ { k => v } ], '$and')
        end
      other
        C.선택기.저장(k, v)
      end
    end
    C
  end
end

#any_of(*criteria) ⇒ 선택 가능

수신자에 이미 존재하는 기준에 대한 추가 제약 조건으로 인수 분리를 추가합니다.

수신자를 분리 피연산자 중 하나로 만들려면 or 을 사용합니다.

각 인수는 해시, 기준 객체, 해시 또는 기준 객체의 배열 또는 중첩된 배열 일 수 있습니다. 중첩된 배열은 평면화되며 모든 깊이가 가능합니다. 배열 전달은 더 이상 사용되지 않습니다.

예시:

두 필드에 지정된 값이 있어야 하는 곳에 $or 선택 항목을 추가합니다.

selectable.any_of(field: 1, field: 2)

둘 중 하나의 값이 일치하는 경우 $or 선택 항목을 추가합니다.

selectable.any_of({field: 1}, {field: 2})

이전 예시 와 동일하지만 더 이상 사용되지 않는 배열 랩을 사용합니다.

selectable.any_of([{field: 1}, {field: 2}])

이전 예시 와 동일하며, 또한 더 이상 사용되지 않습니다.

selectable.any_of([{field: 1}], [{field: 2}])

매개변수:

  • *기준 ([ 해시 | 기준 | Array<해시 | 기준> ]...)

    여러 키/값 쌍 일치 항목 또는 Criteria(기준) 객체 또는 해당 배열. 배열 전달은 더 이상 사용되지 않습니다.

반환합니다:



625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 625

def any_of(*기준)
  기준 = _mongoid_flatten_arrays(기준)
  case 기준.분량
  when 0
    복제
  when 1
    # 단일 기준이 있는 경우 any_of는 and처럼 작동합니다.
    # 참고: 기준은 쿼리 객체 일 수 있으며, #where 메서드는
    # 지원 하지 않습니다.
    self.개인정보 정책에(*기준)
  other
    # 기준이 여러 개인 경우 모두 $or
    # 결과를 self에 추가합니다.
    exprs = 기준.map do |criterion|
      만약 criterion.is_a?(선택 가능)
        _mongoid_expand_keys(criterion.선택기)
      other
        해시[criterion.map do |k, v|
          만약 k.is_a?(기호)
            [ k.to_s, v ]
          other
            [ k, v ]
          end
        end]
      end
    end
    self.개인정보 정책에('$or' => exprs)
  end
end

#사이(기준) ⇒ 선택 가능

범위 선택을 추가합니다.

예시:

단일 범위 내의 결과를 일치시킵니다.

selectable.between(field: 1..2)

여러 범위 간의 결과 일치.

selectable.between(field: 1..2, other: 5..7)

매개변수:

  • criterion (해시)

    여러 키/범위 쌍.

반환합니다:

다음을 발생시킵니다.



115
116
117
118
119
120
121
122
123
124
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 115

def between(criterion)
  올리다 오류::CriteriaArgumentRequired, : between 만약 criterion.nil?

  선택(criterion) do |선택기, 필드, value|
    선택기.저장(
      필드,
      { '$gte' => value.min, '$lte' => value.최대 }
    )
  end
end

#elem_match(기준) ⇒ 선택 가능

$elemMatch로 선택합니다.

예시:

단일 일치 항목에 대한 기준을 추가합니다.

selectable.elem_match(field: { name: "value" })

여러 일치 항목에 대한 기준을 추가합니다.

selectable.elem_match(
  field: { name: "value" },
  other: { name: "value"}
)

where 쿼리에서 $elemMatch를 실행합니다.

selectable.where(:field.elem_match => { name: "value" })

매개변수:

  • criterion (해시)

    필드/매치 쌍입니다.

반환합니다:

다음을 발생시킵니다.



143
144
145
146
147
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 143

def elem_match(criterion)
  올리다 오류::CriteriaArgumentRequired, :elem_match 만약 criterion.nil?

  and_with_operator(criterion, '$elemMatch')
end

#eq(기준) ⇒ 선택 가능

선택기에 $eq 기준을 추가합니다.

예시:

$eq 기준을 추가합니다.

selectable.eq(age: 60)

where 쿼리에서 $eq를 실행합니다.

selectable.where(:field.eq => 10)

매개변수:

  • criterion (해시)

    확인할 필드/값 쌍입니다.

반환합니다:

다음을 발생시킵니다.



240
241
242
243
244
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 240

def eq(criterion)
  올리다 오류::CriteriaArgumentRequired, :eq 만약 criterion.nil?

  and_with_operator(criterion, '$eq')
end

#존재(기준) ⇒ 선택 가능

$exists 선택 항목을 추가합니다.

예시:

단일 선택 항목을 추가합니다.

selectable.exists(field: true)

여러 선택 항목을 추가합니다.

selectable.exists(field: true, other: false)

where 쿼리에서 $exists를 실행합니다.

selectable.where(:field.exists => true)

매개변수:

  • criterion (해시)

    필드/boolean 존재 여부를 확인합니다.

반환합니다:

다음을 발생시킵니다.



164
165
166
167
168
169
170
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 164

def 이 존재합니다(criterion)
  올리다 오류::CriteriaArgumentRequired, :exists 만약 criterion.nil?

  typed_override(criterion, '$exists') do |value|
    몽고이드::부울.진화(value)
  end
end

#expr_query(기준)선택 가능

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

지정된 표현식 쿼리 에 추가합니다.

기준은 다음 형식 중 하나의 해시여야 합니다.

  • value
  • => 값
  • value
  • => 연산자_값_표현식

필드 이름과 연산자 문자열 또는 기호로 제공할 수 있습니다.

예시:

선택 항목을 만듭니다.

selectable.expr_query(age: 50)

매개변수:

  • criterion (해시)

    필드/value 쌍입니다.

반환합니다:

다음을 발생시킵니다.

  • (ArgumentError)


795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 795

def expr_query(criterion)
  올리다 ArgumentError, ' 여기서 기준은nil일 수 없습니다. ' 만약 criterion.nil?
  하지 않는 한 criterion.is_a?(해시)
    올리다 오류::InvalidQuery, "표현식은 다음과 같아야 합니다: #{Errors::InvalidQuery. truncate_expr(criteria)}"
  end

  정규화 = _mongoid_expand_keys(criterion)
  복제. do |쿼리|
    정규화. do |필드, value|
      field_s = 필드.to_s
      만약 field_s.start_with?('$')
        # $and 또는 $where와 같은 표현식 수준 연산자 쿼리
        쿼리.add_operator_expression(field_s, value)
      other
        쿼리.add_field_expression(필드, value)
      end
    end
    쿼리.reset_strategies!
  end
end

#geo_spatial(기준) ⇒ 선택 가능

참고:

$geoIntersects에 사용할 수 있는 유일한 도형은 :intersects_line, :intersects_point, :intersects_polygon입니다.

참고:

$geoWithin 쿼리에 유효한 유일한 옵션은 기하학 도형 :within_polygon과 연산자 :within_box입니다.

참고:

$geoWithin 쿼리 의:within_box 연산자 왼쪽 하단(남서) 좌표 쌍을 첫 번째 인수로, 오른쪽 상단(북동)을 두 번째 인수로 예상합니다. 중요: 위도와 경도가 전달될 때 경도는 좌표 쌍의 첫 번째 요소로 예상됩니다. 출처: https://www.mongodb.com/ko-kr/docs/manual/reference/ 연산자/ 쿼리/box/

$geoIntersects 또는 $geoWithin 선택 항목을 추가합니다. 기준을 확장하려면 예제에 표시된 대로 기호 연산자를 사용해야 합니다.

예시:

선에 대한 지리적 교차 기준을 추가합니다.

query.geo_spatial(:location.intersects_line => [[ 1, 10 ], [ 2, 10 ]])

점 에 대한 지리적 교차 기준을 추가합니다.

query.geo_spatial(:location.intersects_point => [[ 1, 10 ]])

다각형 에 대한 지리적 교차 기준을 추가합니다.

query.geo_spatial(:location.intersects_polygon => [[ 1, 10 ], [ 2, 10 ], [ 1, 10 ]])

다각형에 대한 기준 내 지역을 추가합니다.

query.geo_spatial(:location.within_polygon => [[ 1, 10 ], [ 2, 10 ], [ 1, 10 ]])

상자의 기준 내 지역을 추가합니다.

query.geo_spatial(:location.within_box => [[ 1, 10 ], [ 2, 10 ])

매개변수:

  • criterion (해시)

    기준입니다.

반환합니다:

다음을 발생시킵니다.



209
210
211
212
213
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 209

def geo_spatial(criterion)
  올리다 오류::CriteriaArgumentRequired, :geo_spatial 만약 criterion.nil?

  __merge__(criterion)
end

#gt(기준) ⇒ 선택 가능

선택기에 $gt 기준을 추가합니다.

예시:

$gt 기준을 추가합니다.

selectable.gt(age: 60)

where 쿼리 에서 $gt를 실행합니다.

selectable.where(:field.gt => 10)

매개변수:

  • criterion (해시)

    확인할 필드/값 쌍입니다.

반환합니다:

다음을 발생시킵니다.



258
259
260
261
262
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 258

def gt(criterion)
  올리다 오류::CriteriaArgumentRequired, :gt 만약 criterion.nil?

  and_with_operator(criterion, '$gt')
end

#gte(기준) ⇒ 선택 가능

선택기에 $gte 기준을 추가합니다.

예시:

$gte 기준을 추가합니다.

selectable.gte(age: 60)

where 쿼리 에서 $gte를 실행합니다.

selectable.where(:field.gte => 10)

매개변수:

  • criterion (해시)

    확인할 필드/값 쌍입니다.

반환합니다:

다음을 발생시킵니다.



276
277
278
279
280
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 276

def gte(criterion)
  올리다 오류::CriteriaArgumentRequired, :gte 만약 criterion.nil?

  and_with_operator(criterion, '$gte')
end

#in(조건) ⇒ 선택 가능 : any_in

선택 가능 항목에 $in 선택 항목을 추가합니다.

예시:

배열에 $in 선택 항목을 추가합니다.

selectable.in(age: [ 1, 2, 3 ])

범위 에 $in 선택 항목을 추가합니다.

selectable.in(age: 18..24)

where 쿼리에서 $in을 실행합니다.

selectable.where(:field.in => [ 1, 2, 3 ])

매개변수:

  • 조건 (해시)

    필드/값 기준 쌍입니다.

반환합니다:

다음을 발생시킵니다.



297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 297

def (조건)
  올리다 오류::CriteriaArgumentRequired, :in 만약 조건.nil?

  조건 = Expand_condition_to_array_values(조건)

  만약 전략
    send(전략, 조건, '$in')
  other
    조건.주입(복제) do |쿼리, (필드, value)|
      v = { '$in' => value }
      v = { '$not' => v } 만약 부정?
      쿼리.add_field_expression(필드.to_s, v)
    end.reset_strategies!
  end
end

#js_query(기준)선택 가능

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

JavaScript 선택 항목을 생성합니다.

예시:

JavaScript 선택 항목을 생성합니다.

selectable.js_query("this.age == 50")

매개변수:

  • criterion (string)

    자바스크립트를 문자열로.

반환합니다:



826
827
828
829
830
831
832
833
834
835
836
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 826

def js_query(criterion)
  복제. do |쿼리|
    만약 부정?
      쿼리.add_operator_expression('$and',
                                    [ { '$nor' => [ { '$where ' => criterion } ] } ])
    other
      쿼리.add_operator_expression('$where ', criterion)
    end
    쿼리.reset_strategies!
  end
end

#lt(기준) ⇒ 선택 가능

선택기에 $lt 기준을 추가합니다.

예시:

$lt 기준을 추가합니다.

selectable.lt(age: 60)

where 쿼리 에서 $lt를 실행합니다.

selectable.where(:field.lt => 10)

매개변수:

  • criterion (해시)

    확인할 필드/값 쌍입니다.

반환합니다:

다음을 발생시킵니다.



326
327
328
329
330
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 326

def lt(criterion)
  올리다 오류::CriteriaArgumentRequired, :lt 만약 criterion.nil?

  and_with_operator(criterion, '$lt')
end

#lte(기준) ⇒ 선택 가능

선택기에 $lte 기준을 추가합니다.

예시:

$lte 기준을 추가합니다.

selectable.lte(age: 60)

where 쿼리 에서 $lte를 실행합니다.

selectable.where(:field.lte => 10)

매개변수:

  • criterion (해시)

    확인할 필드/값 쌍입니다.

반환합니다:

다음을 발생시킵니다.



344
345
346
347
348
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 344

def lte(criterion)
  올리다 오류::CriteriaArgumentRequired, :lte 만약 criterion.nil?

  and_with_operator(criterion, '$lte')
end

#max_distance(기준) ⇒ 선택 가능

선택 가능한 항목에 $maxDistance 선택 항목을 추가합니다.

예시:

$maxDistance 선택 항목을 추가합니다.

selectable.max_distance(location: 10)

매개변수:

  • criterion (해시)

    필드/distance 쌍입니다.

반환합니다:

다음을 발생시킵니다.



359
360
361
362
363
364
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 359

def max_distance(criterion)
  올리다 오류::CriteriaArgumentRequired, :max_distance 만약 criterion.nil?

  # $maxDistance는 $near와 함께 제공해야 합니다.
  __add__(criterion, ' $maxDistance ')
end

#mod(기준) ⇒ 선택 가능

선택 가능한 항목에 $mod 선택 항목을 추가합니다.

예시:

$mod 선택 항목을 추가합니다.

selectable.mod(field: [ 10, 1 ])

where 쿼리에서 $mod를 실행합니다.

selectable.where(:field.mod => [ 10, 1 ])

매개변수:

  • criterion (해시)

    필드/mod 선택.

반환합니다:

다음을 발생시킵니다.



377
378
379
380
381
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 377

def mod(criterion)
  올리다 오류::CriteriaArgumentRequired, :mod 만약 criterion.nil?

  and_with_operator(criterion, '$mod')
end

#ne(기준) ⇒ 선택 가능 ~ 라고도 함: 제외

선택 가능 항목에 $ne 선택 항목을 추가합니다.

예시:

무언가에 $ne 값을 쿼리합니다.

selectable.ne(field: 10)

where 쿼리 에서 $ne 를 실행합니다.

selectable.where(:field.ne => "value")

매개변수:

  • criterion (해시)

    /ne 선택 필드 입니다.

반환합니다:

다음을 발생시킵니다.



395
396
397
398
399
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 395

def ne(criterion)
  올리다 오류::CriteriaArgumentRequired, :ne 만약 criterion.nil?

  and_with_operator(criterion, '$ne')
end

#근사치(기준) ⇒ 선택 가능

지리적 선택에 $near 기준을 추가합니다.

예시:

$near 선택 항목을 추가합니다.

selectable.near(location: [ 23.1, 12.1 ])

where 쿼리에서 $near를 실행합니다.

selectable.where(:field.near => [ 23.2, 12.1 ])

매개변수:

  • criterion (해시)

    필드/ 위치 쌍입니다.

반환합니다:

다음을 발생시킵니다.



414
415
416
417
418
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 414

def 가깝다(criterion)
  올리다 오류::CriteriaArgumentRequired, :near 만약 criterion.nil?

  and_with_operator(criterion, '$near ')
end

#near_sphere(기준) ⇒ 선택 가능

지리적 선택에 $nearSphere 기준을 추가합니다.

예시:

$nearSphere 선택 항목을 추가합니다.

selectable.near_sphere(location: [ 23.1, 12.1 ])

where 쿼리에서 $nearSphere를 실행합니다.

selectable.where(:field.near_sphere => [ 10.11, 3.22 ])

매개변수:

  • criterion (해시)

    필드/ 위치 쌍입니다.

반환합니다:

다음을 발생시킵니다.



432
433
434
435
436
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 432

def near_sphere(criterion)
  올리다 오류::CriteriaArgumentRequired, :near_sphere 만약 criterion.nil?

  and_with_operator(criterion, '$nearSphere ')
end

#부정?true | false

현재 선택 가능 항목이 다음 선택 항목을 무효화하나요?

예시:

선택 가능한 항목이 부정인가요?

selectable.negating?

반환합니다:

  • (true | false)

    선택 가능 항목이 부정인 경우.



490
491
492
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 490

def 부정?
  !!부정
end

#nin(조건) ⇒ 선택 가능 ~ 라고도 함: not_in

선택 가능 항목에 $nin 선택 항목을 추가합니다.

예시:

배열 에 $nin 선택 항목을 추가합니다.

selectable.nin(age: [ 1, 2, 3 ])

범위 에 $nin 선택 항목을 추가합니다.

selectable.nin(age: 18..24)

where 쿼리에서 $nin을 실행합니다.

selectable.where(:field.nin => [ 1, 2, 3 ])

매개변수:

  • 조건 (해시)

    필드/값 기준 쌍입니다.

반환합니다:

다음을 발생시킵니다.



453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 453

def nin(조건)
  올리다 오류::CriteriaArgumentRequired, :nin 만약 조건.nil?

  조건 = Expand_condition_to_array_values(조건)

  만약 전략
    send(전략, 조건, '$nin')
  other
    조건.주입(복제) do |쿼리, (필드, value)|
      v = { '$nin' => value }
      v = { '$not' => v } 만약 부정?
      쿼리.add_field_expression(필드.to_s, v)
    end.reset_strategies!
  end
end

#none_of(*criteria) ⇒ 선택 가능

인수를 무효화하여 인수와 일치하지 않는 문서로만 쿼리 를 제한합니다.

예시:

단일 기준을 제외합니다.

selectable.none_of(name: /Bob/)

여러 기준을 제외합니다.

selectable.none_of(name: /Bob/, country: "USA")

여러 기준을 배열로 제외합니다.

selectable.none_of([{ name: /Bob/ }, { country: "USA" }])

매개변수:

  • *기준 ([ 해시 | 기준 ]...)

    키/값 쌍의 일치 항목 또는 무효화할 Criteria(기준) 객체입니다.

반환합니다:



552
553
554
555
556
557
558
559
560
561
562
563
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 552

def none_of(*기준)
  기준 = _mongoid_flatten_arrays(기준)
  반환 dup 만약 기준.비어 있나요?

  exprs = 기준.map do |criterion|
    _mongoid_expand_keys(
      criterion.is_a?(선택 가능) ? criterion.선택기 : criterion
    )
  end

  self.개인정보 정책에('$nor' => exprs)
end

#또는(*기준) ⇒ 선택 가능

선택 가능 항목에 $nor 선택 항목을 추가합니다.

예시:

$nor 선택 항목을 추가합니다.

selectable.nor(field: 1, field: 2)

매개변수:

  • *기준 ([ 해시 | 기준 | Array<해시 | 기준> ]...)

    여러 키/값 쌍의 일치 또는 기준 객체.

반환합니다:



480
481
482
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 480

def 또한(*기준)
  _mongoid_add_top_level_operation('$nor', 기준)
end

#not(*criteria) ⇒ 선택 가능

인수를 무효화하거나 인수가 제공되지 않으면 다음 선택을 무효화합니다.

예시:

다음 선택을 무효화합니다.

selectable.not.in(field: [ 1, 2 ])

$not 기준을 추가합니다.

selectable.not(name: /Bob/)

where 쿼리 에서 $not 을 실행합니다.

selectable.where(:field.not => /Bob/)

매개변수:

  • *기준 ([ 해시 | 기준 ]...)

    키/값 쌍의 일치 항목 또는 무효화할 Criteria(기준) 객체입니다.

반환합니다:



509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 509

def not(*기준)
  만약 기준.비어 있나요?
    dup. { |쿼리| 쿼리.부정 = !쿼리.부정 }
  other
    기준.컴팩트.주입(복제) do |C, new_s|
      new_s = new_s.선택기 만약 new_s.is_a?(선택 가능)
      _mongoid_expand_keys(new_s). do |k, v|
        k = k.to_s
        만약 C.선택기[k] || k.start_with?('$')
          C = C.send(:__multi__, [ { '$nor' => [ { k => v } ] } ], '$and')
        elsif v.is_a?(해시)
          C = C.send(:__multi__, [ { '$nor' => [ { k => v } ] } ], '$and')
        other
          부정 연산자 = 만약 v.is_a?(정규 표현식)
                               '$not'
                             other
                               '$ne'
                             end
          C = C.send(:__override__, { k => v }, 부정 연산자)
        end
      end
      C
    end
  end
end

#또는(*criteria) ⇒ 선택 가능

수신자의 기존 기준과 제공된 인수에서 $or를 사용하여 분리를 생성합니다.

이 동작(리시버가 분리 피연산자 중 하나가 됨)은 ActiveRecord의 or 동작과 일치합니다.

수신자에 이미 존재하는 기준에 대한 추가 제약 조건으로 인수의 분리를 추가하려면 any_of 를 사용합니다.

각 인수는 해시, 기준 객체, 해시 또는 기준 객체의 배열 또는 중첩된 배열 일 수 있습니다. 중첩된 배열은 평면화되며 모든 깊이가 가능합니다. 배열 전달은 더 이상 사용되지 않습니다.

예시:

두 필드에 지정된 값이 있어야 하는 곳에 $or 선택 항목을 추가합니다.

selectable.or(field: 1, field: 2)

둘 중 하나의 값이 일치하는 경우 $or 선택 항목을 추가합니다.

selectable.or({field: 1}, {field: 2})

이전 예시 와 동일하지만 더 이상 사용되지 않는 배열 랩을 사용합니다.

selectable.or([{field: 1}, {field: 2}])

이전 예시 와 동일하며, 또한 더 이상 사용되지 않습니다.

selectable.or([{field: 1}], [{field: 2}])

매개변수:

  • *기준 ([ 해시 | 기준 | Array<해시 | 기준> ]...)

    여러 키/값 쌍 일치 항목 또는 Criteria(기준) 객체 또는 해당 배열. 배열 전달은 더 이상 사용되지 않습니다.

반환합니다:



595
596
597
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 595

def or(*기준)
  _mongoid_add_top_level_operation('$or', 기준)
end

#text_search(terms, opts = nil) ⇒ 선택 가능

참고:

https://www.mongodb.com/ko-kr/docs/manual/reference/ 연산자/ 쿼리 /text/ 에 따라 현재로서는 쿼리 에 여러 텍스트 검색 조건을 제공할 수 없습니다. Mongoid는 이러한 쿼리 빌드 하지만 서버 실행하려고 할 때 오류를 반환합니다.

텍스트 Atlas Search 선택기를 구성합니다.

예시:

텍스트 Atlas Search 선택기를 구성합니다.

selectable.text_search("testing")

옵션으로 텍스트 검색 선택기를 구성합니다.

selectable.text_search("testing", :$language => "fr")

매개변수:

  • 용어 (string | 기호)

    MongoDB가 구문을 분석하고 텍스트 인덱스를 쿼리하는 데 사용하는 용어 문자열입니다.

  • opts (해시) (기본값: nil)

    텍스트 Atlas Search 옵션. 옵션은 MongoDB 설명서를 참조하세요.

반환합니다:

다음을 발생시킵니다.



723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 723

def text_search(용어, opts = nil)
  올리다 오류::CriteriaArgumentRequired, :terms 만약 용어.nil?

  복제. do |쿼리|
    criterion = { '$text' => { '$ 검색' => 용어 } }
    criterion['$text'].병합!(opts) 만약 opts
    만약 쿼리.선택기['$text']
      # https://www.mongodb.com/ko-kr/docs/manual/reference/operator/query/text/
      # 여러 $text 표현식은 현재 지원되지 않습니다.
      # MongoDB 서버 대신 쿼리를 올바르게 빌드합니다.
      # 이전 텍스트 검색 조건을 현재 값으로 덮어씁니다.
      # 하나를 주었습니다.
      몽고이드.로거.경고('현재 서버에서 쿼리당 여러 개의 $text 표현식을 지원하지 않습니다.')
      쿼리.선택기 = { '$and' => [ 쿼리.선택기 ] }.merge(criterion)
    other
      쿼리.선택기 = 쿼리.선택기.merge(criterion)
    end
  end
end

#where(*criteria) ⇒ 선택 가능

이는 대부분의 MongoDB 쿼리의 일반적인 진입점입니다. 이렇게 하면 표준 필드인 값 선택, 해시 메서드를 사용한 확장 선택, string 이 제공되는 경우 $where 선택이 생성됩니다.

예시:

표준 선택 항목을 추가합니다.

selectable.where(name: "syd")

JavaScript 선택 항목을 추가합니다.

selectable.where("this.name == 'syd'")

매개변수:

  • *criterion ([ 해시 | string ]...)

    표준 선택 항목 또는 JavaScript string 입니다.

반환합니다:



757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 757

def 위치(*기준)
  반환 복제.reset_strategies! 만약 기준.비어 있나요?

  기준.주입(self) do |쿼리, criterion|
    올리다 오류::CriteriaArgumentRequired, :where 만약 criterion.nil?

    # 기준을 인스턴스 변수에 저장해야 하므로
    # 수정 가능한 메서드는 다형성 객체 를 만드는 방법을 알고 있습니다.
    # 이 방법은 원칙적으로 여러 기준을 허용합니다.
    # 첫 번째 항목만 @criterion에 저장됩니다. 이
    # first_or_create 등의 메서드 때문에 정상적으로 작동합니다.
    # #where에 하나의 기준만 지정하지 않습니다.
    @criterion = criterion
    만약 criterion.is_a?(문자열)
      쿼리.js_query(criterion)
    other
      쿼리.expr_query(criterion)
    end
  end
end

#with_size(기준) ⇒ 선택 가능

참고:

이 메서드의 이름은 열거형 또는 기호에 대한 기존 #size 메서드와 충돌하지 않도록 #with_size 지정됩니다.

배열 필드에 $size 선택 항목을 추가합니다.

예시:

$size 선택 항목을 추가합니다.

selectable.with_size(field: 5)

where 쿼리에서 $size를 실행합니다.

selectable.where(:field.with_size => 10)

매개변수:

  • criterion (해시)

    필드/크기 쌍 기준입니다.

반환합니다:

다음을 발생시킵니다.



669
670
671
672
673
674
675
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 669

def with_size(criterion)
  올리다 오류::CriteriaArgumentRequired, :with_size 만약 criterion.nil?

  typed_override(criterion, '$size') do |value|
    ::Integer.진화(value)
  end
end

#with_type(기준) ⇒ 선택 가능

참고:

http://vurl.me/PGOU에는 모든 유형의 목록이 포함되어 있습니다.

선택 가능 항목에 $type 선택 항목을 추가합니다.

예시:

$type 선택 항목을 추가합니다.

selectable.with_type(field: 15)

where 쿼리에서 $type을 실행합니다.

selectable.where(:field.with_type => 15)

매개변수:

  • criterion (해시)

    필드/유형 쌍입니다.

반환합니다:

다음을 발생시킵니다.



693
694
695
696
697
698
699
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 693

def with_type(criterion)
  올리다 오류::CriteriaArgumentRequired, :with_type 만약 criterion.nil?

  typed_override(criterion, '$type') do |value|
    ::Integer.진화(value)
  end
end