モジュール: Mongoid::Matcher Private

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

Overview

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

MQL クエリ式を使用したドキュメントのメモリ内一致の実行を支援するメソッドを含むユーティリティ モジュール。

名前空間で定義済み

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 )

    抽出するキー パス。

次の値を返します。

  • オブジェクト | 配列

    フィールド値。



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
83
84
85
86
# ファイル 'lib/mongoid/matcher.rb', 行46

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 。



94
95
96
97
98
99
100
# ファイル 'lib/mongoid/matcher.rb', 行94

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