モジュール: Mongoid::Matcher::FieldExpression Private

定義:
lib/mongoid/matcher/field_ Expression.rb

Overview

このモジュールはプライベート API の一部です。 このモジュールは将来削除または変更される可能性があるため、可能な限り使用しないでください。

メモリ内の特定の値が特定のフィールドに関連する MSQL クエリ式と一致するかどうかを評価するために使用される単一のモジュールです。

クラスメソッドの概要を折りたたむ

クラスメソッドの詳細

一致するかどうか(存在、値、条件)= true| falseブール値

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

値が条件を満たすかどうかを返します。

パラメーター:

  • exists true | false

    値が存在するかどうか。

  • 価値 オブジェクト

    確認する値。

  • 条件 ハッシュ | オブジェクト

    条件述語。

次の値を返します。

  • true | false

    値が一致するかどうか。

  • ブール値


21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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
65
66
67
68
69
70
71
72
73
74
ファイル 'lib/mongoid/matcher/field_ Expression.rb' は、 21行を

MongoDB_function デフォルト 一致するかどうか(exists, 価値, 条件)
  場合 条件.is_a?(ハッシュ)
    条件.すべて? 行う |k, cond_v|
      k = k.to_s
      場合 k.start_with?('$')
        場合 %w($regex $options).include?(k)
          ただし、 条件.key?('$regex')
            発生 Errors::InvalidQuery, " $options に次のように が指定されている場合は $regex が必要です: # { Errors :: InvalidQuery 。runsate_expr 条件 } } "
          end

          場合 k == '$regex'
            場合 options = 条件['$options']
              cond_v = ケース cond_v
              次の場合: Regexp
                BSON::Regexp::Raw.新着情報(cond_v.ソース, options)
              次の場合: BSON::Regexp::Raw
                BSON::Regexp::Raw.新着情報(cond_v.パターン, options)
              else
                BSON::Regexp::Raw.新着情報(cond_v, options)
              end
            elsif 文字列 === cond_v
              cond_v = BSON::Regexp::Raw.新着情報(cond_v)
            end

            FieldOperator.得る(k).一致するかどうか(exists, 価値, cond_v)
          else
            $option が $regex の一部として一致する
            true
          end
        else
          FieldOperator.得る(k).一致するかどうか(exists, 価値, cond_v)
        end
      elsif ハッシュ === 価値
        sub_values = マッチャー.insert_attribute(価値, k)
        場合 sub_values.Length > 0
          sub_values.any? 行う |sub_v|
            Eq.一致するかどうか(true, sub_v, cond_v)
          end
        else
          Eq.一致するかどうか(false, nil, cond_v)
        end
      else
        false
      end
    end
  else
    ケース 条件
    次の場合: ::Regexp, BSON::Regexp::Raw
      regex.operations_array_or_scalar はどちらに一致しますか。(価値, 条件)
    else
      Eq.一致するかどうか(exists, 価値, 条件)
    end
  end
end