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

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

Overview

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

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

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

クラスメソッドの詳細

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

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

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

パラメーター:

  • exists ( true | false ) —

    値が存在するかどうか。

  • 価値 (オブジェクト) —

    確認する値。

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

    条件述語。

次の値を返します。

  • ( true | false ) —

    値が一致するかどうか。

  • (ブール値)


18
19
20
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
ファイル 'lib/mongoid/matcher/field_ Expression.rb' は、 18行を

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.is_a?(文字列)
              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 価値.is_a?(ハッシュ)
        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