モジュール: 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: すべての 、 、およびビット、 BitsAllSet 、 BitsAnyClear 、 BitsAnySet 、 Elematch 、 ElematchExpression 、 Eq 、 EqImpl 、 EqImplWithRegexp 、 Exists 、 Expression 、 ExpressionOperator 、 FieldExpression 、 FieldOperator 、 Gt 、 Gte 、 In 、 Lt 、 Lte 、 Mod 、 N NULL 、ではない、または、正規表現、サイズ、タイプ
クラスメソッドの概要を折りたたむ
-
。 insert_attribute (ドキュメント、キー)= オブジェクト |配列
private
指定されたキーにあるドキュメント内のフィールド値を抽出します。
-
。 find_exact_key (ハッシュ, キー)=string |シンボル | nil
private
別の string またはシンボルキー検索で、正確なキーを返します。
クラスメソッドの詳細
。 insert_attribute (ドキュメント、キー)=オブジェクト |配列
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
指定されたキーにあるドキュメント内のフィールド値を抽出します。
ドキュメントは ハッシュ または モデル インスタンスにすることができます。
キーは有効な MongoDB ドット表記キー です。 次のユースケースがサポートされています。
-
単純なフィールド トラバーサル('foo`) - 現在のドキュメント内のフィールド `foo` を検索します。
-
ハッシュ/埋め込みドキュメント フィールドのトラバーサル('foo.bar') - 現在のドキュメント内のフィールド `foo` を検索し、次に `foo` の値からフィールド `bar` を検索します。 各パス セグメントは、埋め込みドキュメントまたはハッシュ フィールドに下降することができます。
-
配列要素検索('foo.N`) - 配列である必要があるフィールド `foo` から N 個の配列要素を検索します。 N は負でない整数である必要があります。
-
配列トラバーサル('foo.bar') - `foo` が配列フィールドで、`foo` の要素がハッシュまたは埋め込みドキュメントである場合、これは `foo` 配列内の各ハッシュの `bar` フィールドの値の配列を返します。
このメソッドは、何らかのドキュメント内の個々のフィールド値を返すことも、複数のドキュメントからの値の配列を返すこともできます。 配列を返すことができるのは、指定されたパス内のフィールド値がプリミティブ値の配列(例: 整数)、または指定されたパス内のフィールド値がドキュメントの配列(たとえば、1 対多の埋め込み関連付け)であるため、リーフ値は個々のドキュメントのスカラーになる可能性があります。 リーフ値が配列で、1 対多の関連付けが走査された場合、戻り値は配列の配列になります。 個々のフィールド値は配列にすることもできます。この場合は と区別され、後続の配列要素検索などの目的では関連付けトラバーサルと同じように動作します。
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 またはシンボルキー検索で、正確なキーを返します。
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 |