Class: Mongoid::Criteria::Queryable::Key
Relationships & Source Files | |
Inherits: | Object |
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 as follows:
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_spatial(: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.
Class Method Summary
-
.new(name, strategy, operator, expanded = nil, &block) ⇒ Key
constructor
Instantiate the new key.
Instance Attribute Summary
- #block ⇒ Proc readonly
- #expanded ⇒ String readonly
- #name ⇒ String | Symbol readonly
- #operator ⇒ String readonly
- #strategy ⇒ Symbol readonly
Instance Method Summary
-
#==(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.
-
#__sort_pair__
Alias for
Mongoid::Criteria::Queryable::Key#sort_option
. -
#eql?(other)
Alias for #==.
-
#hash ⇒ Integer
Calculate the hash code for a key.
-
#to_s ⇒ String
Convert the key to a string.
-
#transform_value(value, negating = false) ⇒ Hash
Gets the raw selector condition that would be passed to Mongo.
Constructor Details
.new(name, strategy, operator, expanded = nil, &block) ⇒ Key
Instantiate the new key.
# File 'lib/mongoid/criteria/queryable/key.rb', line 113
def initialize(name, strategy, operator, = nil, &block) unless operator.is_a?(String) || operator.is_a?(Integer) raise ArgumentError, "Operator must be a string or an integer: #{operator.inspect}" end @name, @strategy, @operator, @expanded, @block = name, strategy, operator, , block end
Instance Attribute Details
#block ⇒ Proc
(readonly)
# File 'lib/mongoid/criteria/queryable/key.rb', line 76
attr_reader :block
#expanded ⇒ String (readonly)
# File 'lib/mongoid/criteria/queryable/key.rb', line 70
attr_reader :
#name ⇒ String | Symbol (readonly)
# File 'lib/mongoid/criteria/queryable/key.rb', line 64
attr_reader :name
#operator ⇒ String (readonly)
# File 'lib/mongoid/criteria/queryable/key.rb', line 67
attr_reader :operator
#strategy ⇒ Symbol (readonly)
# File 'lib/mongoid/criteria/queryable/key.rb', line 73
attr_reader :strategy
Instance Method Details
#==(other) ⇒ true
| false
Also known as: #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.
# File 'lib/mongoid/criteria/queryable/key.rb', line 131
def __expr_part__(object, negating = false) { name.to_s => transform_value(object, negating) } end
#__sort_option__ ⇒ Hash Also known as: #__sort_pair__
Get the key as raw Mongo sorting options.
#__sort_pair__
Alias for Mongoid::Criteria::Queryable::Key#sort_option
.
# File 'lib/mongoid/criteria/queryable/key.rb', line 173
alias :__sort_pair__ :__sort_option__
#eql?(other)
Alias for #==.
# File 'lib/mongoid/criteria/queryable/key.rb', line 91
alias :eql? :==
#hash ⇒ Integer
Calculate the hash code for a key.
#to_s ⇒ String
Convert the key to a string.
# File 'lib/mongoid/criteria/queryable/key.rb', line 181
def to_s @name.to_s end
#transform_value(value, negating = false) ⇒ Hash
Gets the raw selector condition that would be passed to Mongo.