モジュール: Mongoid::Matcher Private

定義:
build/mongoid- 8.1 /lib/mongoid/matcher.rb
build/mongoid- 8.1 /lib/mongoid/matcher/eq.rb,
build/mongoid- 8.1 /lib/mongoid/matcher/gt.rb,
build/mongoid- 8.1 /lib/mongoid/matcher/in.rb,
build/mongoid- 8 . 1 /lib/mongoid/matcher/lt.rb、
build/mongoid- 8 . 1 /lib/mongoid/matcher/ne.rb、
build/mongoid- 8 . 1 /lib/mongoid/matcher/or.rb、
build/mongoid- 8 . 1 /lib/mongoid/matcher/all.rb、
build/mongoid- 8 . 1 /lib/mongoid/matcher/and.rb、
build/mongoid- 8 . 1 /lib/mongoid/matcher/gte.rb、
build/mongoid- 8 . 1 /lib/mongoid/matcher/lte.rb、
build/mongoid- 8 . 1 /lib/mongoid/matcher/mod.rb、
build/mongoid- 8 . 1 /lib/mongoid/matcher/nin.rb、
build/mongoid- 8 . 1 /lib/mongoid/matcher/nor.rb、
build/mongoid- 8 . 1 /lib/mongoid/matcher/not.rb、
build/mongoid- 8 . 1 /lib/mongoid/matcher/bits.rb、
build/mongoid- 8 . 1 /lib/mongoid/matcher/size.rb、
build/mongoid- 8 . 1 /lib/mongoid/matcher/type.rb、
build/mongoid- 8 . 1 /lib/mongoid/matcher/regex.rb、
build/mongoid- 8 . 1 /lib/mongoid/matcher/exists.rb、
build/mongoid- 8 . 1 /lib/mongoid/matcher/eq_impl.rb、
build/mongoid- 8 . 1 /lib/mongoid/matcher/elem_match.rb、
build/mongoid- 8 . 1 /lib/mongoid/matcher/ Expression.rb、
build/mongoid- 8 . 1 /lib/mongoid/matcher/bits_all_set.rb、
build/mongoid- 8 . 1 /lib/mongoid/matcher/bits_any_set.rb、
build/mongoid- 8 . 1 /lib/mongoid/matcher/bits_all_client.rb,
build/mongoid- 8 . 1 /lib/mongoid/matcher/bits_any_クリア.rb、
build/mongoid- 8 . 1 /lib/mongoid/matcher/field_operator.rb、
build/mongoid- 8 . 1 /lib/mongoid/matcher/field_ Expression.rb、
build/mongoid- 8 . 1 /lib/mongoid/matcher/eq_impl_with_regexp.rb、
build/mongoid- 8 . 1 /lib/mongoid/matcher/ Expression_operator.rb、
build/mongoid- 8 . 1 /lib/mongoid/matcher/elem_match_ Expression.rb

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

名前空間で定義済み

Modules: すべての 、 、およびビットBitsAllSetBitsAnyClearBitsAnySetElematchElematchExpressionEqEqImplEqImplWithRegexpExistsExpressionExpressionOperatorFieldExpressionFieldOperatorGtGteInLtLte 、 Mod N NULLではないまたは正規表現サイズタイプ

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

クラスメソッドの詳細

insert_attribute (ドキュメント、キー)=オブジェクト |配列

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

指定されたキーにあるドキュメント内のフィールド値を抽出します。

ドキュメントは ハッシュ または モデル インスタンスにすることができます。

キーは有効な MongoDB ドット表記キー です。 次のユースケースがサポートされています。

  • 単純なフィールド トラバーサル('foo`) - 現在のドキュメント内のフィールド `foo` を検索します。

  • ハッシュ/埋め込みドキュメント フィールドのトラバーサル('foo.bar') - 現在のドキュメント内のフィールド `foo` を検索し、次に `foo` の値からフィールド `bar` を検索します。 各パス セグメントは、埋め込みドキュメントまたはハッシュ フィールドに下降することができます。

  • 配列要素検索('foo.N`) - 配列である必要があるフィールド `foo` から N 個の配列要素を検索します。 N は負でない整数である必要があります。

  • 配列トラバーサル('foo.bar') - `foo` が配列フィールドで、`foo` の要素がハッシュまたは埋め込みドキュメントである場合、これは `foo` 配列内の各ハッシュの `bar` フィールドの値の配列を返します。

このメソッドは、何らかのドキュメント内の個々のフィールド値を返すことも、複数のドキュメントからの値の配列を返すこともできます。 配列を返すことができるのは、指定されたパス内のフィールド値がプリミティブ値の配列(例: 整数)、または指定されたパス内のフィールド値がドキュメントの配列(たとえば、1 対多の埋め込み関連付け)であるため、リーフ値は個々のドキュメントのスカラーになる可能性があります。 リーフ値が配列で、1 対多の関連付けが走査された場合、戻り値は配列の配列になります。 個々のフィールド値は配列にすることもできます。この場合は と区別され、後続の配列要素検索などの目的では関連付けトラバーサルと同じように動作します。

パラメーター:

  • ドキュメント ドキュメント| ハッシュ

    抽出するドキュメント。

  • キー ( string )

    抽出するキー パス。

次の値を返します。

  • オブジェクト | 配列

    フィールド値。



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
75
76
77
78
79
80
81
82
ファイル ' build/mongoid- 8.1 /lib/mongoid/matcher.rb ' の場合は42行

MongoDB_function デフォルト insert_attribute(ドキュメント, キー)
  場合 ドキュメント.respond_to?(:as_attributes, true)
    # ドキュメントにハッシュされたフィールドがある場合、as_attributes はそれらのフィールドを保持します
    異なるアクセスを提供しないハッシュ インスタンスとしての 。
    ハッシュ フィールドで異なるアクセスを取得するには、 BSON::Document に変換します。
    ドキュメント = ドキュメント.送信(:as_attributes)
  end

  Current = [ドキュメント]

  キー.to_s.分裂('.'). 行う |フィールド|
    新着情報 = []
    Current. 行う |doc|
      ケース doc
      次の場合: ハッシュ
        actual_key = find_exact_key(doc, フィールド)
        場合 !actual_key.nil?
          新着情報 < doc[actual_key]
        end
      次の場合: 配列
        場合 (index = フィールド.to_i).to_s == フィールド
          場合 doc.Length > index
            新着情報 < doc[index]
          end
        end
        doc. 行う |サブドキュメント|
          場合 ハッシュ === サブドキュメント
            actual_key = find_exact_key(サブドキュメント, フィールド)
            場合 !actual_key.nil?
              新着情報 < サブドキュメント[actual_key]
            end
          end
        end
      end
    end
    Current = 新着情報
    break 場合 Current.空の場合
  end

  Current
end

find_exact_key (ハッシュ, キー)= string |シンボル | nil

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

別の string またはシンボルキー検索で、正確なキーを返します。

パラメーター:

  • ハッシュ ハッシュ

    入力ハッシュ。

  • キー ( string | Symbol )

    別個の検索を実行するためのキー。

次の値を返します。

  • ( string | Symbol | nil )

    ハッシュに存在する正確なキー(正しいタイプ)、またはキーが存在しない場合は nil 。



90
91
92
93
94
95
96
ファイル ' build/mongoid- 8.1 /lib/mongoid/matcher.rb ' の場合は90行

MongoDB_function デフォルト find_exact_key(ハッシュ, キー)
  key_s = キー.to_s
  return key_s 場合 ハッシュ.key?(key_s)

  key_sym = キー.to_sym
  ハッシュ.key?(key_sym) ? key_sym : nil
end