class Mongoid::Criteria::Queryable::Options

The options is a hash representation of options passed to MongoDB queries, such as skip, limit, and sorting criteria.

Public Instance Methods

[]=(key, value, localize = true)
Alias for: store
__deep_copy__() click to toggle source

Perform a deep copy of the options.

@example Perform a deep copy.

options.__deep_copy__

@return [ Options ] The copied options.

@since 6.1.1

# File lib/mongoid/criteria/queryable/options.rb, line 101
def __deep_copy__
  self.class.new(aliases, serializers) do |copy|
    each_pair do |key, value|
      copy.merge!(key => value.__deep_copy__)
    end
  end
end
fields() click to toggle source

Convenience method for getting the field options.

@example Get the fields options.

options.fields

@return [ Hash ] The fields options.

@since 1.0.0

# File lib/mongoid/criteria/queryable/options.rb, line 20
def fields
  self[:fields]
end
limit() click to toggle source

Convenience method for getting the limit option.

@example Get the limit option.

options.limit

@return [ Integer ] The limit option.

@since 1.0.0

# File lib/mongoid/criteria/queryable/options.rb, line 32
def limit
  self[:limit]
end
skip() click to toggle source

Convenience method for getting the skip option.

@example Get the skip option.

options.skip

@return [ Integer ] The skip option.

@since 1.0.0

# File lib/mongoid/criteria/queryable/options.rb, line 44
def skip
  self[:skip]
end
sort() click to toggle source

Convenience method for getting the sort options.

@example Get the sort options.

options.sort

@return [ Hash ] The sort options.

@since 1.0.0

# File lib/mongoid/criteria/queryable/options.rb, line 56
def sort
  self[:sort]
end
store(key, value, localize = true) click to toggle source

Store the value in the options for the provided key. The options will handle all necessary serialization and localization in this step.

@example Store a value in the options.

options.store(:key, "testing")

@param [ String, Symbol ] key The name of the attribute. @param [ Object ] value The value to add.

@return [ Object ] The stored object.

@since 1.0.0

Calls superclass method
# File lib/mongoid/criteria/queryable/options.rb, line 72
def store(key, value, localize = true)
  super(key, evolve(value, localize))
end
Also aliased as: []=
to_pipeline() click to toggle source

Convert the options to aggregation pipeline friendly options.

@example Convert the options to a pipeline.

options.to_pipeline

@return [ Array<Hash> ] The options in pipeline form.

@since 2.0.0

# File lib/mongoid/criteria/queryable/options.rb, line 85
def to_pipeline
  pipeline = []
  pipeline.push({ "$skip" => skip }) if skip
  pipeline.push({ "$limit" => limit }) if limit
  pipeline.push({ "$sort" => sort }) if sort
  pipeline
end

Private Instance Methods

evolve(value, localize = true) click to toggle source

Evolve a single key selection with various types of values.

@api private

@example Evolve a simple selection.

options.evolve(field, 5)

@param [ Object ] value The value to serialize.

@return [ Object ] The serialized object.

@since 1.0.0

# File lib/mongoid/criteria/queryable/options.rb, line 123
def evolve(value, localize = true)
  case value
  when Hash
    evolve_hash(value, localize)
  else
    value
  end
end
evolve_hash(value, localize = true) click to toggle source

Evolve a single key selection with hash values.

@api private

@example Evolve a simple selection.

options.evolve(field, { "$gt" => 5 })

@param [ Hash ] value The hash to serialize.

@return [ Object ] The serialized hash.

@since 1.0.0

# File lib/mongoid/criteria/queryable/options.rb, line 144
def evolve_hash(value, localize = true)
  value.inject({}) do |hash, (field, _value)|
    name, serializer = storage_pair(field)
    name = localized_key(name, serializer) if localize
    hash[name] = _value
    hash
  end
end