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

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

개요

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

상수 요약 접기

LINE_STRING =

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

"라인스트링"
POINT =

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

""
POLYGON =

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

"다각형"

인스턴스 속성 요약 접기

클래스 메서드 요약 접기

인스턴스 메서드 요약 접기

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

인스턴스 속성 세부 정보

#부정객체

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



25
26
27
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 25

def 부정
  @negating
end

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



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

attr_accessor :negating, :selector

#선택기객체

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



25
26
27
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 25

def 선택기
  @selector
end

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



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

attr_accessor :negating, :selector

클래스 메서드 세부 정보

.포워더블Array<Symbol>

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

예시:

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

Selectable.forwardables

반환합니다:

  • (Array<Symbol>)

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



945
946
947
948
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 945

def 포워더블
  public_instance_methods(거짓) -
    [ :negating, :negating=, :negating?, :selector, :selector= ]
end

인스턴스 메서드 세부 정보

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

$all 기준을 추가합니다.

예시:

기준을 추가합니다.

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

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

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

매개변수:

  • *기준 (해시...)

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

반환합니다:



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

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

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

    조건 = Expand_condition_to_array_values(조건)

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

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

$and 기준을 추가합니다.

예시:

기준을 추가합니다.

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

매개변수:

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

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

반환합니다:



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 78

def 개인정보 정책에(*기준)
  _mongoid_flatten_arrays(기준).주입(self.복제) do |C, new_s|
    만약 new_s.is_a?(선택 가능)
      new_s = new_s.선택기
    end
    정규화 = _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?('$') }
        then
          병합된_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(기준) 객체 또는 해당 배열. 배열 전달은 더 이상 사용되지 않습니다.

반환합니다:



674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 674

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 (해시)

    여러 키/범위 쌍.

반환합니다:



124
125
126
127
128
129
130
131
132
133
134
135
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 124

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

  선택(criterion) do |선택기, 필드, value|
    선택기.저장(
      필드,
      { "$gte" => value.min, "$lt" => 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 (해시)

    필드/매치 쌍입니다.

반환합니다:



154
155
156
157
158
159
160
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 154

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

  and_with_operator(criterion, "$elemMatch")
end

#eq(기준) ⇒ 선택 가능

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

예시:

$eq 기준을 추가합니다.

selectable.eq(age: 60)

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

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

매개변수:

  • criterion (해시)

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

반환합니다:



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

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

  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 존재 여부를 확인합니다.

반환합니다:



177
178
179
180
181
182
183
184
185
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 177

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

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

#geo_spatial(기준) ⇒ 선택 가능

참고:

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

참고:

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

참고:

$geoWithin 쿼리 의 :within_box 연산자 는 왼쪽 하단(남서쪽) 좌표 쌍을 첫 번째 인수로, 오른쪽 상단(북동쪽)을 두 번째 인수로 예상합니다. 중요: 위도와 경도가 전달될 때 경도는 좌표 쌍의 첫 번째 요소로 예상됩니다. 출처: 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 (해시)

    기준입니다.

반환합니다:



224
225
226
227
228
229
230
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 224

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

  __merge__(criterion)
end

#gt(기준) ⇒ 선택 가능

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

예시:

$gt 기준을 추가합니다.

selectable.gt(age: 60)

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

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

매개변수:

  • criterion (해시)

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

반환합니다:



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

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

  and_with_operator(criterion, "$gt")
end

#gte(기준) ⇒ 선택 가능

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

예시:

$gte 기준을 추가합니다.

selectable.gte(age: 60)

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

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

매개변수:

  • criterion (해시)

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

반환합니다:



297
298
299
300
301
302
303
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 297

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

  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 ])

매개변수:

  • 조건 (해시)

    필드/값 기준 쌍입니다.

반환합니다:



320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 320

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

  조건 = Expand_condition_to_array_values(조건)

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

#lt(기준) ⇒ 선택 가능

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

예시:

$lt 기준을 추가합니다.

selectable.lt(age: 60)

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

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

매개변수:

  • criterion (해시)

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

반환합니다:



353
354
355
356
357
358
359
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 353

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

  and_with_operator(criterion, "$lt")
end

#lte(기준) ⇒ 선택 가능

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

예시:

$lte 기준을 추가합니다.

selectable.lte(age: 60)

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

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

매개변수:

  • criterion (해시)

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

반환합니다:



373
374
375
376
377
378
379
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 373

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

  and_with_operator(criterion, "$lt")
end

#max_distance(기준) ⇒ 선택 가능

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

예시:

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

selectable.max_distance(location: 10)

매개변수:

  • criterion (해시)

    필드/distance 쌍입니다.

반환합니다:



390
391
392
393
394
395
396
397
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 390

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

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

#mod(기준) ⇒ 선택 가능

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

예시:

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

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

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

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

매개변수:

  • criterion (해시)

    필드/mod 선택.

반환합니다:



410
411
412
413
414
415
416
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 410

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

  and_with_operator(criterion, "$mod")
end

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

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

예시:

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

selectable.ne(field: 10)

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

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

매개변수:

  • criterion (해시)

    /ne 선택 필드 입니다.

반환합니다:



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

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

  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 (해시)

    필드/ 위치 쌍입니다.

반환합니다:



451
452
453
454
455
456
457
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 451

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

  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 (해시)

    필드/ 위치 쌍입니다.

반환합니다:



471
472
473
474
475
476
477
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 471

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

  and_with_operator(criterion, "$nearSphere")
end

#부정?true | false

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

예시:

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

selectable.negating?

반환합니다:

  • (true | false)

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



535
536
537
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 535

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 ])

매개변수:

  • 조건 (해시)

    필드/값 기준 쌍입니다.

반환합니다:



494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 494

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

  조건 = Expand_condition_to_array_values(조건)

  만약 전략
    send(전략, 조건, "$nin")
  other
    조건.주입(복제) do |쿼리, (필드, value)|
      v = {'$nin' => value}
      만약 부정?
        v = {'$not' => v}
      end
      쿼리.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(기준) 객체입니다.

반환합니다:



601
602
603
604
605
606
607
608
609
610
611
612
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 601

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<해시 | 기준> ]...)

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

반환합니다:



525
526
527
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 525

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(기준) 객체입니다.

반환합니다:



554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 554

def not(*기준)
  만약 기준.비어 있나요?
    dup. { |쿼리| 쿼리.부정 = !쿼리.부정 }
  other
    기준.컴팩트.주입(self.복제) do |C, new_s|
      만약 new_s.is_a?(선택 가능)
        new_s = new_s.선택기
      end
      _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')
        other
          만약 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
      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(기준) 객체 또는 해당 배열. 배열 전달은 더 이상 사용되지 않습니다.

반환합니다:



644
645
646
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 644

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

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

참고:

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

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

예시:

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

selectable.text_search("testing")

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

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

매개변수:

  • 용어 (string | 기호)

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

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

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

반환합니다:



776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 776

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

  복제. 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 입니다.

반환합니다:



812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 812

def 위치(*기준)
  기준.주입(복제) do |쿼리, criterion|
    만약 criterion.nil?
      올리다 오류::CriteriaArgumentRequired, :where
    end

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

#with_size(기준) ⇒ 선택 가능

참고:

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

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

예시:

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

selectable.with_size(field: 5)

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

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

매개변수:

  • criterion (해시)

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

반환합니다:



718
719
720
721
722
723
724
725
726
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 718

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

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

#with_type(기준) ⇒ 선택 가능

참고:

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

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

예시:

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

selectable.with_type(field: 15)

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

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

매개변수:

  • criterion (해시)

    필드/유형 쌍입니다.

반환합니다:



744
745
746
747
748
749
750
751
752
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 744

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

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