Class: Mongoid::Criteria::Queryable::Key
- Inherits:
-
Object
- Object
- Mongoid::Criteria::Queryable::Key
- Defined in:
- lib/mongoid/criteria/queryable/key.rb
Overview
Key objects represent specifications for building query expressions utilizing MongoDB selectors.
Simple key-value conditions are translated directly into expression hashes by Mongoid without utilizing Key objects. For example, the following condition:
Foo.where(price: 1)
… is translated to the following simple expression:
{price: 1}
More complex conditions would start involving Key objects. For example:
Foo.where(:price.gt => 1)
… causes a Key instance to be created thusly:
Key.new(:price, :__override__, '$gt')
This Key instance utilizes operator
but not expanded
nor block
. The corresponding MongoDB query expression is:
{price: {'$gt' => 1}}
A yet more more complex example is the following condition:
Foo.geo_spacial(:boundary.intersects_point => [1, 10])
Processing this condition will cause a Key instance to be created as follows:
Key.new(:location, :__override__, '$geoIntersects', '$geometry') do |value|
{ "type" => POINT, "coordinates" => value }
end
… eventually producing the following MongoDB query expression:
{
boundary: {
'$geoIntersects' => {
'$geometry' => {
type: "Point" ,
coordinates: [ 1, 10 ]
}
}
}
}
Key instances can be thought of as procs that map a value to the MongoDB query expression required to obtain the key’s condition, given the value.
Instance Attribute Summary collapse
-
#block ⇒ Proc
readonly
The optional block to transform values.
-
#expanded ⇒ String
readonly
The MongoDB expanded query operator.
-
#name ⇒ String | Symbol
readonly
The name of the field.
-
#operator ⇒ String
readonly
The MongoDB query operator.
-
#strategy ⇒ Symbol
readonly
The name of the merge strategy.
Instance Method Summary collapse
-
#==(other) ⇒ true, false
(also: #eql?)
Does the key equal another object?.
-
#__expr_part__(object, negating = false) ⇒ Hash
Gets the raw selector that would be passed to Mongo from this key.
-
#__sort_option__ ⇒ Hash
(also: #__sort_pair__)
Get the key as raw Mongo sorting options.
-
#hash ⇒ Fixnum
Calculate the hash code for a key.
-
#initialize(name, strategy, operator, expanded = nil, &block) ⇒ Key
constructor
Instantiate the new key.
-
#to_s ⇒ String
Convert the key to a string.
Constructor Details
#initialize(name, strategy, operator, expanded = nil, &block) ⇒ Key
Instantiate the new key.
113 114 115 116 |
# File 'lib/mongoid/criteria/queryable/key.rb', line 113 def initialize(name, strategy, operator, = nil, &block) @name, @strategy, @operator, @expanded, @block = name, strategy, operator, , block end |
Instance Attribute Details
#block ⇒ Proc (readonly)
Returns The optional block to transform values.
74 75 76 |
# File 'lib/mongoid/criteria/queryable/key.rb', line 74 def block @block end |
#expanded ⇒ String (readonly)
Returns The MongoDB expanded query operator.
68 69 70 |
# File 'lib/mongoid/criteria/queryable/key.rb', line 68 def @expanded end |
#name ⇒ String | Symbol (readonly)
Returns The name of the field.
62 63 64 |
# File 'lib/mongoid/criteria/queryable/key.rb', line 62 def name @name end |
#operator ⇒ String (readonly)
Returns The MongoDB query operator.
65 66 67 |
# File 'lib/mongoid/criteria/queryable/key.rb', line 65 def operator @operator end |
#strategy ⇒ Symbol (readonly)
Returns The name of the merge strategy.
71 72 73 |
# File 'lib/mongoid/criteria/queryable/key.rb', line 71 def strategy @strategy end |
Instance Method Details
#==(other) ⇒ true, false Also known as: eql?
Does the key equal another object?
87 88 89 90 |
# File 'lib/mongoid/criteria/queryable/key.rb', line 87 def ==(other) return false unless other.is_a?(Key) name == other.name && operator == other.operator && == other. end |
#__expr_part__(object, negating = false) ⇒ Hash
Gets the raw selector that would be passed to Mongo from this key.
129 130 131 132 133 |
# File 'lib/mongoid/criteria/queryable/key.rb', line 129 def __expr_part__(object, negating = false) value = block ? block[object] : object expression = { operator => ? { => value } : value } { name.to_s => (negating && operator != "$not") ? { "$not" => expression } : expression } end |
#__sort_option__ ⇒ Hash Also known as: __sort_pair__
Get the key as raw Mongo sorting options.
143 144 145 |
# File 'lib/mongoid/criteria/queryable/key.rb', line 143 def __sort_option__ { name => operator } end |
#hash ⇒ Fixnum
Calculate the hash code for a key.
98 99 100 |
# File 'lib/mongoid/criteria/queryable/key.rb', line 98 def hash [name, operator, ].hash end |
#to_s ⇒ String
Convert the key to a string.
156 157 158 |
# File 'lib/mongoid/criteria/queryable/key.rb', line 156 def to_s @name.to_s end |