Module: Humanoid::Criterion::Optional

Included in:
Humanoid::Criteria
Defined in:
lib/humanoid/criterion/optional.rb

Instance Method Summary collapse

Instance Method Details

#cacheObject

Tells the criteria that the cursor that gets returned needs to be cached. This is so multiple iterations don’t hit the database multiple times, however this is not advisable when working with large data sets as the entire results will get stored in memory.

Example:

criteria.cache



13
14
15
# File 'lib/humanoid/criterion/optional.rb', line 13

def cache
  @options.merge!(:cache => true); self
end

#cached?Boolean

Will return true if the cache option has been set.

Example:

criteria.cached?

Returns:



22
23
24
25
# File 'lib/humanoid/criterion/optional.rb', line 22

def cached?
  @cached ||= @options.delete(:cache)
  @cached == true
end

#enslaveObject

Flags the criteria to execute against a read-only slave in the pool instead of master.

Example:

criteria.enslave



33
34
35
# File 'lib/humanoid/criterion/optional.rb', line 33

def enslave
  @options.merge!(:enslave => true); self
end

#extras(extras) ⇒ Object

Adds a criterion to the Criteria that specifies additional options to be passed to the Ruby driver, in the exact format for the driver.

Options:

extras: A Hash that gets set to the driver options.

Example:

criteria.extras(:limit => 20, :skip => 40)

Returns: self



49
50
51
# File 'lib/humanoid/criterion/optional.rb', line 49

def extras(extras)
  @options.merge!(extras); filter_options; self
end

#id(*args) ⇒ Object

Adds a criterion to the Criteria that specifies an id that must be matched.

Options:

object_id: A String representation of a Mongo::ObjectID

Example:

criteria.id("4ab2bc4b8ad548971900005c")

Returns: self



64
65
66
67
# File 'lib/humanoid/criterion/optional.rb', line 64

def id(*args)
  (args.flatten.size > 1) ? self.in(:_id => args.flatten) : (@selector[:_id] = args.first)
  self
end

#limit(value = 20) ⇒ Object

Adds a criterion to the Criteria that specifies the maximum number of results to return. This is mostly used in conjunction with skip() to handle paginated results.

Options:

value: An Integer specifying the max number of results. Defaults to 20.

Example:

criteria.limit(100)

Returns: self



82
83
84
# File 'lib/humanoid/criterion/optional.rb', line 82

def limit(value = 20)
  @options[:limit] = value; self
end

#offset(*args) ⇒ Object

Returns the offset option. If a per_page option is in the list then it will replace it with a skip parameter and return the same value. Defaults to 20 if nothing was provided.



89
90
91
# File 'lib/humanoid/criterion/optional.rb', line 89

def offset(*args)
  args.size > 0 ? skip(args.first) : @options[:skip]
end

#order_by(params = []) ⇒ Object

Adds a criterion to the Criteria that specifies the sort order of the returned documents in the database. Similar to a SQL “ORDER BY”.

Options:

params: An Array of [field, direction] sorting pairs.

Example:

criteria.order_by([[:field1, :asc], [:field2, :desc]])

Returns: self



105
106
107
# File 'lib/humanoid/criterion/optional.rb', line 105

def order_by(params = [])
  @options[:sort] = params; self
end

#skip(value = 0) ⇒ Object

Adds a criterion to the Criteria that specifies how many results to skip when returning Documents. This is mostly used in conjunction with limit() to handle paginated results, and is similar to the traditional “offset” parameter.

Options:

value: An Integer specifying the number of results to skip. Defaults to 0.

Example:

criteria.skip(20)

Returns: self



123
124
125
# File 'lib/humanoid/criterion/optional.rb', line 123

def skip(value = 0)
  @options[:skip] = value; self
end