クラス: Mongoid::Criteria::Queryable::Key
- 継承:
-
オブジェクト
- オブジェクト
- Mongoid::Criteria::Queryable::Key
- 定義:
- lib/mongoid/criteria/queryable/key.rb
Overview
キー オブジェクトは、MongoDB セレクターを利用してクエリ式を構築するための仕様を表します。
単純なキー値条件は、Key オブジェクトを利用せずに Mongoid によって式ハッシュに直接変換されます。 たとえば、次の条件は次のとおりです。
Foo.where(price: 1)
... は次の単純な式に変換されます。
{price: 1}
より複雑な条件には、 キー オブジェクトが含まれます。 例:
Foo.where(:price.gt => 1)
... によって、キーインスタンスが次のように作成されます。
Key.new(:price, :__override__, '$gt')
このキー インスタンスはoperatorを使用しますが、 expandedもblockも使用しません。 対応する MongoDB クエリ式は次のとおりです。
{price: {'$gt' => 1}}
さらに複雑な例として、次の条件があります。
Foo.geo_spatial(:boundary.intersects_point => [1, 10])
この条件を処理すると、キー インスタンスが次のように作成されます。
Key.new(:location, :__override__, '$geoIntersects', '$geometry') do |value|
{ "type" => POINT, "coordinates" => value }
end
... 最終的に次のMongoDBクエリ式を生成します。
{ 境界: { '$geoIntersects' => { '$geometry' => { 型: "点" 、座標: [ 1, 10 ] } } } }
キー インスタンスは、指定された値を持つキーの条件を取得するために必要なMongoDB クエリ式に値をマッピングするプロシージャと考えることができます。
インスタンス属性の概要を折りたたむ
-
#block ⇒ Proc
readOnly
値を変換するための任意のブロック。
-
#展開= string
readOnly
MongoDB 展開クエリ演算子。
-
# name = string | Symbol
readOnly
フィールドの名前。
-
#演算子= string
readOnly
MongoDB クエリ演算子。
-
#strategy ⇒ Symbol
readOnly
マージ戦略の名前。
インスタンス メソッドの概要を折りたたむ
-
# == (その他) ==(その他) ========= ================================================================== false (#eql?)
キーは別のオブジェクトと等しくなりますか。
-
# __expr_Part__ (オブジェクト、否定 = false) = ハッシュ
このキーからmongoに渡される未加工のセレクターを取得します。
-
# __sort_option__ ==============================================================
未加工のmongoソート オプションとしてキーを取得します。
-
#ハッシュ= 整数
キーのハッシュ コードを計算します。
-
#初期化(名前, 戦略, 演算子, 展開 = nil, & ブロック) = キー
コンストラクター
新しいキーをインスタンス化します。
-
# to_s = string
キーを string に変換します。
-
# transform_value (値、否定 =false)=false
mongoに渡される未加工のセレクター条件を取得します。
コンストラクターの詳細
#初期化(名前, 戦略, 演算子, 展開 = nil, & ブロック) =キー
新しいキーをインスタンス化します。
111 112 113 114 115 116 117 118 |
# ファイル 'lib/mongoid/criteria/queryable/key.rb' は、 111行 デフォルト 初期化(name, 戦略, 演算子, = nil, &ブロック) ただし、 演算子.is_a?(文字列) || 演算子.is_a?(整数) 発生 ArgumentError, " 演算子 は または整数である必要 が ありstring ます : end @name, @strategy, @ 演算子, @expanded, @ ブロック = name, 戦略, 演算子, , ブロック end |
インスタンス属性の詳細
ブロック= Proc (readonly)
値を変換するための任意ブロックを返します。
73 74 75 |
# ファイル 'lib/mongoid/criteria/queryable/key.rb' は、 73行 デフォルト ブロック @ ブロック end |
#展開詳しくは、 string (読み取り専用)
MongoDB 展開クエリ演算子を返します。
67 68 69 |
# ファイル 'lib/mongoid/criteria/queryable/key.rb' は、 67行 デフォルト @expanded end |
# name = string |シンボル(読み取り専用)
フィールドの名前を返します。
61 62 63 |
# ファイル 'lib/mongoid/criteria/queryable/key.rb' は、 61行 デフォルト name @name end |
演算子= string (読み取り専用)
MongoDB クエリ演算子を返します。
64 65 66 |
# ファイル 'lib/mongoid/criteria/queryable/key.rb' は、 64行 デフォルト 演算子 @ 演算子 end |
#戦略~シンボル(読み取り専用)
マージ戦略の名前を返します。
70 71 72 |
# ファイル 'lib/mongoid/criteria/queryable/key.rb' は、 70行 デフォルト 戦略 @strategy end |
インスタンス メソッドの詳細
# == (その他) ==(その他) ========= ================================================================== false とも呼ばれます: eql?
キーは別のオブジェクトと等しくなりますか。
84 85 86 87 88 |
# ファイル 'lib/mongoid/criteria/queryable/key.rb' は、 84行 デフォルト ==(その他) return false ただし、 その他.is_a?(キー) name == その他.name & & 演算子 == その他.演算子 & & == その他. end |
# __expr_Part__ (オブジェクト、否定 = false) =ハッシュ
このキーからmongoに渡される未加工のセレクターを取得します。
129 130 131 |
# ファイル 'lib/mongoid/criteria/queryable/key.rb' は、 129行 デフォルト __expr_part__(オブジェクト, 否定 = false) { name.to_s => transform_value(オブジェクト, 否定) } end |
# __sort_option__ =ハッシュ別名: __sort_ pair__
未加工のmongoソート オプションとしてキーを取得します。
164 165 166 |
# ファイル 'lib/mongoid/criteria/queryable/key.rb' は、 164行 デフォルト __sort_option__ { name => 演算子 } end |
#ハッシュ=整数
キーのハッシュ コードを計算します。
94 95 96 |
# ファイル 'lib/mongoid/criteria/queryable/key.rb' は、 94行 デフォルト ハッシュ [ name, 演算子, ].ハッシュ end |
# to_s = string
キーを string に変換します。
175 176 177 |
# ファイル 'lib/mongoid/criteria/queryable/key.rb' は、 175行 デフォルト to_s @name.to_s end |
# transform_value (値、否定 =false)= false
mongoに渡される未加工のセレクター条件を取得します。
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 |
# ファイル 'lib/mongoid/criteria/queryable/key.rb' は、 142行 デフォルト transform_value(価値, 否定 = false) expr = 場合 ブロック ブロック[価値] else 価値 end expr = { => expr } 場合 expr = { 演算子 => expr } expr = { ' $not ' => expr } 場合 否定 & & 演算子 != ' $not ' expr end |