モジュール: Mongoid::Criteria::Queryable::Selectable
- 次による拡張機能。
- Macroable
- 定義:
- lib/mongoid/criteria/queryable/selectable.rb
Overview
クエリ可能な選択可能な は、データベースからドキュメントを選択する機能があるという点で選択可能です。 選択可能なモジュールは、MongoDB セレクターの構築に関連するすべての機能を選択可能な に提供します。
定数の概要の削減
- Line_STRING =
LineString $geometry の 定数。
。LineString。
- POINT =
点 $geometry の定数。
。点。
- ポリゴン =
多角形 $geometry の定数。
。多角形。
インスタンス属性の概要を折りたたむ
-
#否定 =オブジェクト
属性が否定の値を返します。
- 次の式が否定される場合は、# を否定します。 () = オブジェクト
-
#セレクター= オブジェクト
属性セレクターの値を返します。
- # selector クエリ セレクター。 (クエリ セレクター) = オブジェクト
クラスメソッドの概要を折りたたむ
-
。 フォワードルック → 配列_シンボル<Symbol>
モデルから転送できる選択可能な のメソッドを取得します。
インスタンス メソッドの概要を折りたたむ
-
# all (*criteria) = 選択可能 (また: #all_in)
$all 基準を追加します。
-
#および(*criteria) = 選択可能 (また: #all_Of)
$and 基準を追加します。
-
#any_ of (*criteria) = 選択可能
引数の論理和を受信者にすでに存在する基準に追加の制約として追加します。
-
間での#(基準)= 選択可能
範囲選択を追加します。
-
# elem_match (基準) = 選択可能
$elemMatch で を選択します。
-
# eq (基準) = 選択可能
セレクターに $eq 基準を追加します。
-
# exists (基準) = 選択可能
$exists 選択を追加します。
-
# geo_spaced (基準) = 選択可能
$geoIntersects または $geoWithin 選択を追加します。
-
# gt (criteria) = 選択可能
セレクターに $gt 基準を追加します。
-
# gte (基準) = 選択可能
セレクターに $gte 基準を追加します。
-
(条件)=で選択可能(#any_in)
$in 選択を 選択可能に追加します。
-
# lt (基準) = 選択可能
セレクターに $lt 基準を追加します。
-
#lte (基準)=選択可能
セレクターに $lte 基準を追加します。
-
# max_ ユーザー距離(基準) = 選択可能
$maxDistance の選択を 選択可能に追加します。
-
#mod (基準) = 選択可能
選択可能に $mod 選択を追加します。
-
#ne (基準)=選択可能(#除外)
選択可能に $ne 選択を追加します。
-
両方の値が存在しない場合(基準)= 選択可能
地理選択に $near 基準を追加します。
-
# near_sphere (基準) = 選択可能
地理選択に $nearSphere 基準を追加します。
-
#否定= true | false
現在の選択が次の選択を除外しますか。
-
# nin (条件) = 選択可能(#not_in)
$nin 選択を 選択可能に追加します。
-
#none_ of (*criteria) = 選択可能
引数を否定し、引数に一致しないドキュメントのみにクエリを制限します。
-
#nor (*criteria) = 選択可能
選択可能に $nor の選択を追加します。
-
NULLではない(*criteria) = 選択可能
引数を否定するか、引数が指定されていない場合は次の選択を否定します。
-
#または(*criteria) = 選択可能
$or を使用して、レシーバー内の既存の基準と指定された引数から論理和を作成します。
-
# text_search (ターム、opts = nil) = 選択可能
テキスト検索セレクターを構築します。
-
( *criteria) = 選択可能
これは、ほとんどの MongoDB クエリの一般的なエントリ ポイントです。
-
# with_size (基準) = 選択可能
配列フィールドに $size 選択を追加します。
-
# with_type (基準) = 選択可能
選択可能に $type 選択を追加します。
Macroableに含まれるメソッド
インスタンス属性の詳細
#否定 =オブジェクト
属性が否定の値を返します。
25 26 27 |
# ファイル 'lib/mongoid/criteria/queryable/selectable.rb' は、 25行 デフォルト 否定 @否定 end |
次の式が否定される場合は、# を否定します。 (場合) =オブジェクト
25 |
# ファイル 'lib/mongoid/criteria/queryable/selectable.rb' は、 25行 attr_accessor : 否定, : セレクター |
#セレクター=オブジェクト
属性セレクターの値を返します。
25 26 27 |
# ファイル 'lib/mongoid/criteria/queryable/selectable.rb' は、 25行 デフォルト セレクター @Selector end |
# selector クエリ セレクター。 (クエリ セレクター) =オブジェクト
25 |
# ファイル 'lib/mongoid/criteria/queryable/selectable.rb' は、 25行 attr_accessor : 否定, : セレクター |
クラスメソッドの詳細
。 フォワードルック → 配列_シンボル<Symbol>
モデルから転送できる選択可能な のメソッドを取得します。
945 946 947 948 |
# ファイル 'lib/mongoid/criteria/queryable/selectable.rb' は、 945行 デフォルト forwardables public_instance_methods(false) - [ : 否定, :否定=, : 否定, : セレクター, :selector= ] end |
インスタンス メソッドの詳細
# all (*criteria) =選択可能な別名: 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行 デフォルト すべて(*条件) 場合 条件.空の場合 return 複製.タップ 行う |クエリ| クエリ.reset_strategies! end end 条件.inject(複製) 行う |クエリ, 条件| 場合 条件.nil? 発生 Errors::CriteriaArgmentRequired, :all end 条件 = (条件) 場合 戦略 送信(戦略, 条件, " $all ") else 条件.inject(クエリ) 行う |_query, (フィールド, 価値)| v = {' $all ' => 価値} 場合 否定 v = {' $not ' => v} end _query.add_field_式(フィールド.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行 デフォルト および(*条件) _mongoid_ flatten_arrays(条件).inject(自己.複製) 行う |c, new_s| 場合 new_s.is_a?(選択可能) new_s = new_s.セレクター end 正規化された = (new_s) 正規化された.各 行う |k, v| k = k.to_s 場合 c.セレクター[k] # k にはすでに条件があります。 # v が演算子で、既存のすべての条件が次の場合: や 演算子もあり、v は既存の条件に存在しないため、 既存の条件に追加できます。 # それ以外の場合は $and を使用します。 場合 v.is_a?(ハッシュ) & & v.Length == 1 & & (new_k = v.キー.最初に).start_with?('$') & & (existing_kv = c.セレクター[k]).is_a?(ハッシュ) & & !existing_kv.key?(new_k) & & existing_kv.キー.すべて? { |sub_k| sub_k.start_with?('$') } 次に merge_v = c.セレクター[k].merge(v) c.セレクター.store(k, merge_v) else c = c.送信(:__multi__, [k => v], ' $and ') end else c.セレクター.store(k, v) end end c end end |
#any_ of (*criteria) =選択可能
引数の論理和を受信者にすでに存在する基準に追加の制約として追加します。
or
を使用して、レシーバーを論理和オペランドの 1 つになります。
各引数は、ハッシュ、Criteria オブジェクト、Hash または 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行 デフォルト any_of(*条件) 条件 = _mongoid_ flatten_arrays(条件) ケース 条件.Length 次の場合: 0 複製 次の場合: 1 # 条件が 1 つの場合、任意の _ は と のように動作します。 注: 条件は クエリ オブジェクトにすることができます。このオブジェクトは メソッドが # はサポートしていません。 自己.および(*条件) else 複数の条件がある場合は、それらをすべて $or で組み合わせます # を作成し、その結果を自分自身に追加します。 explains = 条件.map 行う |criterion| 場合 criterion.is_a?(選択可能) (criterion.セレクター) else ハッシュ[criterion.map 行う |k, v| 場合 k.is_a?(シンボル) [k.to_s, v] else [k, v] end end] end end 自己.および(' $or ' => explains) end end |
間での#(基準)=選択可能
範囲選択を追加します。
124 125 126 127 128 129 130 131 132 133 134 135 |
# ファイル 'lib/mongoid/criteria/queryable/selectable.rb' は、 124行 デフォルト 間(criterion) 場合 criterion.nil? 発生 Errors::CriteriaArgmentRequired, : 間 end 選択(criterion) 行う |セレクター, フィールド, 価値| セレクター.store( フィールド, { "$gte" => 価値.min, "$lte" => 価値.最大 } ) end end |
# elem_match (基準) =選択可能
$elemMatch で を選択します。
154 155 156 157 158 159 160 |
# ファイル 'lib/mongoid/criteria/queryable/selectable.rb' は、 154行 デフォルト elem_match(criterion) 場合 criterion.nil? 発生 Errors::CriteriaArgmentRequired, :elem_match end と_with_演算子(criterion, " $elemMatch ") end |
# eq (基準) =選択可能
セレクターに $eq 基準を追加します。
257 258 259 260 261 262 263 |
# ファイル 'lib/mongoid/criteria/queryable/selectable.rb' は、 257行 デフォルト eq(criterion) 場合 criterion.nil? 発生 Errors::CriteriaArgmentRequired, :eq end と_with_演算子(criterion, " $eq ") end |
# exists (基準) =選択可能
$exists 選択を追加します。
177 178 179 180 181 182 183 184 185 |
# ファイル 'lib/mongoid/criteria/queryable/selectable.rb' は、 177行 デフォルト exists(criterion) 場合 criterion.nil? 発生 Errors::CriteriaArgmentRequired, :exists end typed_overwrite(criterion, " $exists ") 行う |価値| Mongoid::ブール値.量用(価値) end end |
# geo_spaced (基準) =選択可能
$geoIntersects の有効なジオメトリシェイプは、 : Intersects_line、 : Intersects_point、 : Intersects_polygon のみです。
$geoWithin クエリの有効なオプションは、ジオメトリシェイプ :within_polygon と 演算子 :within_box のみです。
$geoWithin クエリの :within_box 演算子は、最初の引数として左下(緯度)の座標ペアを、2 番目の引数として右上(北極と南極が入っている)の座標ペアを要求します。 重要: 緯度と経度が渡される場合、座標ペアの最初の要素として経度が予想されます。 ソース: www.mongodb.com/ja-jp/docs/manual/reference/operator/query/box /
$geoIntersects または $geoWithin 選択を追加します。 基準を展開するには、例に示すように、シンボル演算子を使用する必要があります。
224 225 226 227 228 229 230 |
# ファイル 'lib/mongoid/criteria/queryable/selectable.rb' は、 224行 デフォルト geo_patial(criterion) 場合 criterion.nil? 発生 Errors::CriteriaArgmentRequired, :geo_patial end __merge__(criterion) end |
# gt (criteria) =選択可能
セレクターに $gt 基準を追加します。
277 278 279 280 281 282 283 |
# ファイル 'lib/mongoid/criteria/queryable/selectable.rb' は、 277行 デフォルト gt(criterion) 場合 criterion.nil? 発生 Errors::CriteriaArgmentRequired, :gt end と_with_演算子(criterion, "$gt") end |
# gte (基準) =選択可能
セレクターに $gte 基準を追加します。
297 298 299 300 301 302 303 |
# ファイル 'lib/mongoid/criteria/queryable/selectable.rb' は、 297行 デフォルト gte(criterion) 場合 criterion.nil? 発生 Errors::CriteriaArgmentRequired, :gte end と_with_演算子(criterion, "$gte") end |
(条件) ====== ======================================================
$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行 デフォルト in(条件) 場合 条件.nil? 発生 Errors::CriteriaArgmentRequired, : で end 条件 = (条件) 場合 戦略 送信(戦略, 条件, " $in ") else 条件.inject(複製) 行う |クエリ, (フィールド, 価値)| v = {'$in' => 価値} 場合 否定 v = {' $not ' => v} end クエリ.add_field_式(フィールド.to_s, v) end.reset_strategies! end end |
# lt (基準) =選択可能
セレクターに $lt 基準を追加します。
353 354 355 356 357 358 359 |
# ファイル 'lib/mongoid/criteria/queryable/selectable.rb' は、 353行 デフォルト lt(criterion) 場合 criterion.nil? 発生 Errors::CriteriaArgmentRequired, :lt end と_with_演算子(criterion, " $lt ") end |
#lte (基準)=選択可能
セレクターに $lte 基準を追加します。
373 374 375 376 377 378 379 |
# ファイル 'lib/mongoid/criteria/queryable/selectable.rb' は、 373行 デフォルト lte(criterion) 場合 criterion.nil? 発生 Errors::CriteriaArgmentRequired, :lte end と_with_演算子(criterion, "$lte") end |
# max_ ユーザー距離(基準) =選択可能
$maxDistance の選択を 選択可能に追加します。
390 391 392 393 394 395 396 397 |
# ファイル 'lib/mongoid/criteria/queryable/selectable.rb' は、 390行 デフォルト max_ ユーザー距離(criterion) 場合 criterion.nil? 発生 Errors::CriteriaArgmentRequired, :max_ ユーザー距離 end #$maxDistance は $near と併用する必要があります __add__(criterion, " $maxDistance ") end |
#mod (基準) =選択可能
選択可能に $mod 選択を追加します。
410 411 412 413 414 415 416 |
# ファイル 'lib/mongoid/criteria/queryable/selectable.rb' は、 410行 デフォルト mod(criterion) 場合 criterion.nil? 発生 Errors::CriteriaArgmentRequired, :mod end と_with_演算子(criterion, "$mod") end |
#ネ(基準) =選択可能別名:除外
選択可能に $ne 選択を追加します。
430 431 432 433 434 435 436 |
# ファイル 'lib/mongoid/criteria/queryable/selectable.rb' は、 430行 デフォルト ne(criterion) 場合 criterion.nil? 発生 Errors::CriteriaArgmentRequired, :ne end と_with_演算子(criterion, "$ne") end |
両方の値が存在しない場合(基準)=選択可能
地理選択に $near 基準を追加します。
451 452 453 454 455 456 457 |
# ファイル 'lib/mongoid/criteria/queryable/selectable.rb' は、 451行 デフォルト near(criterion) 場合 criterion.nil? 発生 Errors::CriteriaArgmentRequired, :near end と_with_演算子(criterion, " $near ") end |
# near_sphere (基準) =選択可能
地理選択に $nearSphere 基準を追加します。
471 472 473 474 475 476 477 |
# ファイル 'lib/mongoid/criteria/queryable/selectable.rb' は、 471行 デフォルト near_sphere(criterion) 場合 criterion.nil? 発生 Errors::CriteriaArgmentRequired, :near_sphere end と_with_演算子(criterion, " $nearSphere ") end |
#否定 = true | false
現在の選択可能な は次の選択を否定しますか。
535 536 537 |
# ファイル 'lib/mongoid/criteria/queryable/selectable.rb' は、 535行 デフォルト 否定 !!否定 end |
非 _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行 デフォルト nin(条件) 場合 条件.nil? 発生 Errors::CriteriaArgmentRequired, :nin end 条件 = (条件) 場合 戦略 送信(戦略, 条件, "$nin") else 条件.inject(複製) 行う |クエリ, (フィールド, 価値)| v = {'$nin' => 価値} 場合 否定 v = {' $not ' => v} end クエリ.add_field_式(フィールド.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行 デフォルト non_ of(*条件) 条件 = _mongoid_ flatten_arrays(条件) return dup 場合 条件.空の場合 explains = 条件.map 行う |criterion| ( criterion.is_a?(選択可能) ? criterion.セレクター : criterion) end 自己.および(' $nor ' => explains) end |
#nor (*criteria) =選択可能
選択可能に $nor の選択を追加します。
525 526 527 |
# ファイル 'lib/mongoid/criteria/queryable/selectable.rb' は、 525行 デフォルト NULLではない(*条件) _mongoid_add_top_level_operation(' $nor ', 条件) end |
NULLではない(*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行 デフォルト ではない(*条件) 場合 条件.空の場合 dup.タップ { |クエリ| クエリ.否定 = true } else 条件.compact.inject(自己.複製) 行う |c, new_s| 場合 new_s.is_a?(選択可能) new_s = new_s.セレクター end (new_s).各 行う |k, v| k = k.to_s 場合 c.セレクター[k] || k.start_with?('$') c = c.送信(:__multi__, [{' $nor ' => [{k => v}]}], ' $and ') else 場合 v.is_a?(ハッシュ) c = c.送信(:__multi__, [{' $nor ' => [{k => v}]}], ' $and ') else 場合 v.is_a?(Regexp) 否定_演算子 = ' $not ' else 否定_演算子 = '$ne' end c = c.送信(:__override__, {k => v}, 否定_演算子) end end end c end end end |
#または(*criteria) =選択可能
$or を使用して、レシーバー内の既存の基準と指定された引数から論理和を作成します。
この動作(論理和オペランドの 1 つになる受信者)は、ActiveRecord のor
の動作と一致します。
any_of
を使用して、引数の論理和を受信側にすでに存在する基準に追加の制約として追加します。
各引数は、ハッシュ、Criteria オブジェクト、Hash または Criteria オブジェクトの配列、またはネストされた配列にすることができます。 ネストされた配列はフラット化され、任意の深さになります。 配列を渡すことは非推奨です。
644 645 646 |
# ファイル 'lib/mongoid/criteria/queryable/selectable.rb' は、 644行 デフォルト or(*条件) _mongoid_add_top_level_operation(' $or ', 条件) end |
# text_search (ターム、opts = nil) =選択可能
www.mongodb.com/ja-jp/docs/manual/reference/operator/query/text に従って/ クエリ内で複数のテキスト検索条件を指定することはできません。 Mongoid はそのようなクエリをビルドしますが、実行しようとするとサーバーはエラーを返します。
テキスト検索セレクターを構築します。
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行 デフォルト text_search(ターム, ops = nil) 場合 ターム.nil? 発生 Errors::CriteriaArgmentRequired, : ターム end 複製.タップ 行う |クエリ| criterion = {'$text' => { ' $search ' => ターム }} criterion['$text'].mergeします。(ops) 場合 ops 場合 クエリ.セレクター['$text'] https://www.mongodb.com/ja-jp/docs/manual/reference/operator/query/text/ あたり 複数の $text 式は現在サポートされていません #MongoDB サーバーですが、次の代わりにクエリを正しくビルドします: # 現在のテキスト検索条件で以前のテキスト検索条件を上書きする は 1 つのみを指定します。 Mongoid.logger.WARN(クエリごとに複数 の $text 式は現在、サーバーではサポートされていません 。) クエリ.セレクター = {' $and ' => [クエリ.セレクター]}.merge(criterion) else クエリ.セレクター = クエリ.セレクター.merge(criterion) end end end |
( *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行 デフォルト WHERE(*条件) 条件.inject(複製) 行う |クエリ, criterion| 場合 criterion.nil? 発生 Errors::CriteriaArgmentRequired, :where end # 基準をインスタンス変数に保存する必要があるため # 変更可能なメソッドは、多形オブジェクトの作成方法を認識します。 #このメソッドは原則として複数の条件を受け入れることに注意してください。 # では、最初の 1 つだけが @criterion に保存されます。 これ は first_or_create などのメソッドがあるため、正常に機能します。 # は $where に 1 つの基準のみを指定します。 @criterion = criterion 場合 criterion.is_a?(文字列) js_query(criterion) else expr_query(criterion) end end.reset_strategies! end |
# with_size (基準) =選択可能
このメソッドは、列挙型またはシンボルの既存のサイズ設定メソッドと競合しないように #with_size という名前が付けられています。
配列フィールドに $size 選択を追加します。
718 719 720 721 722 723 724 725 726 |
# ファイル 'lib/mongoid/criteria/queryable/selectable.rb' は、 718行 デフォルト with_size(criterion) 場合 criterion.nil? 発生 Errors::CriteriaArgmentRequired, :with_size end typed_overwrite(criterion, " $size ") 行う |価値| ::整数.量用(価値) end end |
# with_type (基準) =選択可能
vurl.me/PGOUにはすべてのタイプのリストが含まれています。
選択可能に $type 選択を追加します。
744 745 746 747 748 749 750 751 752 |
# ファイル 'lib/mongoid/criteria/queryable/selectable.rb' は、 744行 デフォルト with_type(criterion) 場合 criterion.nil? 発生 Errors::CriteriaArgmentRequired, :with_type end typed_overwrite(criterion, " $type ") 行う |価値| ::整数.量用(価値) end end |