クラス: 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 クエリ式が生成されます。
{
boundary: {
'$geoIntersects' => {
'$geometry' => {
type: "Point" ,
coordinates: [ 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, & ブロック) =キー
新しいキーをインスタンス化します。
113 114 115 116 117 118 119 120 |
# ファイル 'lib/mongoid/criteria/queryable/key.rb' は、 113行 デフォルト 初期化(name, 戦略, 演算子, = nil, &ブロック) ただし、 演算子.is_a?(文字列) || 演算子.is_a?(整数) 発生 ArgumentError, " 演算子 は または整数である必要 が ありstring ます : end @name, @strategy, @ 演算子, @expanded, @ ブロック = name, 戦略, 演算子, , ブロック end |
インスタンス属性の詳細
ブロック= Proc (readonly)
値を変換するための任意ブロックを返します。
76 77 78 |
# ファイル 'lib/mongoid/criteria/queryable/key.rb' は、 76行 デフォルト ブロック @ ブロック end |
#展開詳しくは、 string (読み取り専用)
MongoDB 展開クエリ演算子を返します。
70 71 72 |
# ファイル 'lib/mongoid/criteria/queryable/key.rb' は、 70行 デフォルト @expanded end |
# name = string |シンボル(読み取り専用)
フィールドの名前を返します。
64 65 66 |
# ファイル 'lib/mongoid/criteria/queryable/key.rb' は、 64行 デフォルト name @name end |
演算子= string (読み取り専用)
MongoDB クエリ演算子を返します。
67 68 69 |
# ファイル 'lib/mongoid/criteria/queryable/key.rb' は、 67行 デフォルト 演算子 @ 演算子 end |
#戦略~シンボル(読み取り専用)
マージ戦略の名前を返します。
73 74 75 |
# ファイル 'lib/mongoid/criteria/queryable/key.rb' は、 73行 デフォルト 戦略 @strategy end |
インスタンス メソッドの詳細
# == (その他) ==(その他) ========= ================================================================== false とも呼ばれます: eql?
キーは別のオブジェクトと等しくなりますか。
87 88 89 90 |
# ファイル 'lib/mongoid/criteria/queryable/key.rb' は、 87行 デフォルト ==(その他) return false ただし、 その他.is_a?(キー) name == その他.name & & 演算子 == その他.演算子 & & == その他. end |
# __expr_Part__ (オブジェクト、否定 = false) =ハッシュ
このキーからmongoに渡される未加工のセレクターを取得します。
131 132 133 |
# ファイル 'lib/mongoid/criteria/queryable/key.rb' は、 131行 デフォルト __expr_part__(オブジェクト, 否定 = false) { name.to_s => transform_value(オブジェクト, 否定) } end |
# __sort_option__ =ハッシュ別名: __sort_ pair__
未加工のmongoソート オプションとしてキーを取得します。
170 171 172 |
# ファイル 'lib/mongoid/criteria/queryable/key.rb' は、 170行 デフォルト __sort_option__ { name => 演算子 } end |
#ハッシュ=整数
キーのハッシュ コードを計算します。
96 97 98 |
# ファイル 'lib/mongoid/criteria/queryable/key.rb' は、 96行 デフォルト ハッシュ [name, 演算子, ].ハッシュ end |
# to_s = string
キーを string に変換します。
181 182 183 |
# ファイル 'lib/mongoid/criteria/queryable/key.rb' は、 181行 デフォルト to_s @name.to_s end |
# transform_value (値、否定 =false)= false
mongoに渡される未加工のセレクター条件を取得します。
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 |
# ファイル 'lib/mongoid/criteria/queryable/key.rb' は、 144行 デフォルト transform_value(価値, 否定 = false) 場合 ブロック expr = ブロック[価値] else expr = 価値 end 場合 expr = { => expr} end expr = {演算子 => expr} 場合 否定 & & 演算子 != ' $not ' expr = {' $not ' => expr} end expr end |