모듈: Mongoid::Criteria::Queryable::Selectable
- 확장자:
- 매크로 가능
- 다음에 정의됨:
- lib/mongoid/criteria/queryable/selectable.rb
개요
쿼리 가능 선택 가능 항목은 데이터베이스 에서 문서 를 선택할 수 있다는 기능 에서 선택 가능합니다. 선택 가능 모듈은 MongoDB 선택기 구축과 관련된 선택 가능 항목에 모든 기능을 제공합니다.
상수 요약 접기
- LINE_STRING =
라인스트링 $geometry에 대한 상수입니다.
"라인스트링"
- POINT =
포인트 $geometry에 대한 상수입니다.
"점"
- POLYGON =
다각형 $geometry에 대한 상수입니다.
"다각형"
인스턴스 속성 요약 접기
-
#부정 ⇒ 객체
속성 부정의 값을 반환합니다.
- #부정(negating) 다음 표현식이 부정되는 경우.(Ifthe) ⇒ 객체
-
#선택기 ⇒ 객체
속성 선택기의 값을 반환합니다.
- #선택기 쿼리 선택기입니다.(queryselector.) ⇒ 객체
클래스 메서드 요약 접기
-
.포워더블 ⇒ Array<Symbol>
모델에서 전달할 수 있는 선택 가능한 항목의 메서드를 가져옵니다.
인스턴스 메서드 요약 접기
-
#모든(*기준) ⇒ 선택 가능 (동의어: #all_in)
$all 기준을 추가합니다.
-
#및(*criteria) ⇒ 선택 가능 (동의어: #all_of)
$and 기준을 추가합니다.
-
#any_of(*criteria) ⇒ 선택 가능
수신자에 이미 존재하는 기준에 대한 추가 제약 조건으로 인수 분리를 추가합니다.
-
#사이(기준) ⇒ 선택 가능
범위 선택을 추가합니다.
-
#elem_match(기준) ⇒ 선택 가능
$elemMatch로 선택합니다.
-
#eq(기준) ⇒ 선택 가능
선택기에 $eq 기준을 추가합니다.
-
#존재(기준) ⇒ 선택 가능
$exists 선택 항목을 추가합니다.
-
#geo_spatial(기준) ⇒ 선택 가능
$geoIntersects 또는 $geoWithin 선택 항목을 추가합니다.
-
#gt(기준) ⇒ 선택 가능
선택기에 $gt 기준을 추가합니다.
-
#gte(기준) ⇒ 선택 가능
선택기에 $gte 기준을 추가합니다.
-
#in(조건) ⇒ 선택 가능 (동의어: #any_in)
선택 가능 항목에 $in 선택 항목을 추가합니다.
-
#lt(기준) ⇒ 선택 가능
선택기에 $lt 기준을 추가합니다.
-
#lte(기준) ⇒ 선택 가능
선택기에 $lte 기준을 추가합니다.
-
#max_distance(기준) ⇒ 선택 가능
선택 가능한 항목에 $maxDistance 선택 항목을 추가합니다.
-
#mod(기준) ⇒ 선택 가능
선택 가능한 항목에 $mod 선택 항목을 추가합니다.
-
#ne(기준) ⇒ 선택 가능 (동의어: #excludes)
선택 가능 항목에 $ne 선택 항목을 추가합니다.
-
#근사치(기준) ⇒ 선택 가능
지리적 선택에 $near 기준을 추가합니다.
-
#near_sphere(기준) ⇒ 선택 가능
지리적 선택에 $nearSphere 기준을 추가합니다.
-
#부정? ⇒ true | false
현재 선택 가능 항목이 다음 선택 항목을 무효화하나요?
-
#nin(조건) ⇒ 선택 가능 (동의어: #not_in)
선택 가능 항목에 $nin 선택 항목을 추가합니다.
-
#none_of(*criteria) ⇒ 선택 가능
인수를 무효화하여 인수와 일치하지 않는 문서로만 쿼리 를 제한합니다.
-
#또는(*기준) ⇒ 선택 가능
선택 가능 항목에 $nor 선택 항목을 추가합니다.
-
#not(*criteria) ⇒ 선택 가능
인수를 무효화하거나 인수가 제공되지 않으면 다음 선택을 무효화합니다.
-
#또는(*criteria) ⇒ 선택 가능
수신자의 기존 기준과 제공된 인수에서 $or를 사용하여 분리를 생성합니다.
-
#text_search(terms, opts = nil) ⇒ 선택 가능
텍스트 Atlas Search 선택기를 구성합니다.
-
#where(*criteria) ⇒ 선택 가능
이는 대부분의 MongoDB 쿼리의 일반적인 진입 점 입니다.
-
#with_size(기준) ⇒ 선택 가능
배열 필드에 $size 선택 항목을 추가합니다.
-
#with_type(기준) ⇒ 선택 가능
선택 가능 항목에 $type 선택 항목을 추가합니다.
매크로 가능에 포함된 메서드
인스턴스 속성 세부 정보
#부정 ⇒ 객체
속성 부정의 값을 반환합니다.
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>
모델에서 전달할 수 있는 선택 가능한 항목의 메서드를 가져옵니다.
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 기준을 추가합니다.
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 조건 = (조건) 만약 전략 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 기준을 추가합니다.
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 정규화 = (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
을 사용합니다.
각 인수는 해시, 기준 객체, 해시 또는 기준 객체의 배열 또는 중첩된 배열 일 수 있습니다. 중첩된 배열은 평면화되며 모든 깊이가 가능합니다. 배열 전달은 더 이상 사용되지 않습니다.
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?(선택 가능) (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 |
#사이(기준) ⇒ 선택 가능
범위 선택을 추가합니다.
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로 선택합니다.
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 기준을 추가합니다.
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 선택 항목을 추가합니다.
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 선택 항목을 추가합니다. 기준을 확장하려면 예제에 표시된 대로 기호 연산자를 사용해야 합니다.
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 기준을 추가합니다.
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 기준을 추가합니다.
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 선택 항목을 추가합니다.
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 조건 = (조건) 만약 전략 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 기준을 추가합니다.
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 기준을 추가합니다.
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 선택 항목을 추가합니다.
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 선택 항목을 추가합니다.
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 선택 항목을 추가합니다.
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 기준을 추가합니다.
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 기준을 추가합니다.
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
현재 선택 가능 항목이 다음 선택 항목을 무효화하나요?
535 536 537 |
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 535 def 부정? !!부정 end |
#nin(조건) ⇒ 선택 가능 ~ 라고도 함: not_in
선택 가능 항목에 $nin 선택 항목을 추가합니다.
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 조건 = (조건) 만약 전략 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) ⇒ 선택 가능
인수를 무효화하여 인수와 일치하지 않는 문서로만 쿼리 를 제한합니다.
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| ( criterion.is_a?(선택 가능) ? criterion.선택기 : criterion) end self.개인정보 정책에('$nor' => exprs) end |
#또는(*기준) ⇒ 선택 가능
선택 가능 항목에 $nor 선택 항목을 추가합니다.
525 526 527 |
# 파일 'lib/mongoid/criteria/queryable/selectable.rb', 줄 525 def 또한(*기준) _mongoid_add_top_level_operation('$nor', 기준) end |
#not(*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 (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
를 사용합니다.
각 인수는 해시, 기준 객체, 해시 또는 기준 객체의 배열 또는 중첩된 배열 일 수 있습니다. 중첩된 배열은 평면화되며 모든 깊이가 가능합니다. 배열 전달은 더 이상 사용되지 않습니다.
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 선택기를 구성합니다.
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 선택이 생성됩니다.
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 선택 항목을 추가합니다.
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 선택 항목을 추가합니다.
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 |