モジュール: 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)- 現在のdocument内のフィールドfoo を検索します。
  • ハッシュ/埋め込みドキュメントフィールドトラバーサル(foo.bar)- 現在のdocument内のフィールドfoo を取得し、次に foo の値からフィールドbar を取得します。各パス セグメントは、埋め込みドキュメントまたは ハッシュフィールドに下降することができます。
  • 配列要素検索(foo.N)- 配列である必要があるフィールドfoo から N 番目の配列要素を検索します。N は負でない整数である必要があります。
  • 配列トラバーサル(foo.bar)- foo が配列フィールドで、かつ foo の要素がハッシュまたは埋め込みドキュメントである場合、これは { 内の各ハッシュの barフィールドの値の配列を返します。 foo 配列

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

パラメーター:

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

    抽出するドキュメント。

  • キー ( string )

    抽出するキー パス。

次の値を返します。

  • オブジェクト | 配列

    フィールド値。



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
83
84
85
86
87
88
89
90
91
92
# ファイル 'lib/mongoid/matcher.rb', 行44

MongoDB_function デフォルト insert_attribute(ドキュメント, キー)
  # マッチャー システムは、これにもアトミック値を送信します。
  より複雑なタイプを一致させようとすると、 が必要になります。以外の場合
  # ドキュメントまたはハッシュが指定されている場合は、ロジックを短縮して、
  # は空の配列を返します。
  return [] ただし、 ドキュメント.is_a?(ハッシュ) || ドキュメント.is_a?(ドキュメント)

  # パフォーマンスの最適化。キーに「」が含まれていない場合、文字
  #ドキュメントの直接属性を参照必要があります。
  ただし、 キー.include?('.')
    ハッシュ = ドキュメント.respond_to?(:attributes) ? ドキュメント.属性 : ドキュメント
    キー = find_exact_key(ハッシュ, キー)
    return キー ? [ ハッシュ[キー] ] : []
  end

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

  Current = [ ドキュメント ]

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

  Current
end

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

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

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

パラメーター:

  • ハッシュ ハッシュ

    入力ハッシュ。

  • キー ( string | Symbol )

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

次の値を返します。

  • ( string | Symbol | nil )

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



100
101
102
103
104
105
106
# ファイル 'lib/mongoid/matcher.rb', 行100

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