Class: Mongoid::Collection

Inherits:
Object show all
Defined in:
lib/mongoid/collection.rb

Overview

The Mongoid wrapper to the Mongo Ruby driver’s collection object.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(klass, name) ⇒ Collection

Initialize a new Mongoid::Collection, setting up the master, slave, and name attributes. Masters will be used for writes, slaves for reads.

Example:

Mongoid::Collection.new(masters, slaves, "test")



78
79
80
# File 'lib/mongoid/collection.rb', line 78

def initialize(klass, name)
  @klass, @name = klass, name
end

Instance Attribute Details

#counterObject (readonly)

Returns the value of attribute counter.



10
11
12
# File 'lib/mongoid/collection.rb', line 10

def counter
  @counter
end

#nameObject (readonly)

Returns the value of attribute name.



10
11
12
# File 'lib/mongoid/collection.rb', line 10

def name
  @name
end

Instance Method Details

#directed(options = {}) ⇒ Object

Determines where to send the next read query. If the slaves are not defined then send to master. If the read counter is under the configured maximum then return the master. In any other case return the slaves.

Example:

collection.directed

Return:

Either a Master or Slaves collection.



33
34
35
36
37
# File 'lib/mongoid/collection.rb', line 33

def directed(options = {})
  options.delete(:cache)
  enslave = options.delete(:enslave) || @klass.enslaved?
  enslave ? master_or_slaves : master
end

#find(selector = {}, options = {}) ⇒ Object

Find documents from the database given a selector and options.

Options:

selector: A Hash selector that is the query. options: The options to pass to the db.

Example:

collection.find({ :test => "value" })



49
50
51
52
53
54
55
56
# File 'lib/mongoid/collection.rb', line 49

def find(selector = {}, options = {})
  cursor = Mongoid::Cursor.new(@klass, self, directed(options).find(selector, options))
  if block_given?
    yield cursor; cursor.close
  else
    cursor
  end
end

#find_one(selector = {}, options = {}) ⇒ Object

Find the first document from the database given a selector and options.

Options:

selector: A Hash selector that is the query. options: The options to pass to the db.

Example:

collection.find_one({ :test => "value" })



68
69
70
# File 'lib/mongoid/collection.rb', line 68

def find_one(selector = {}, options = {})
  directed(options).find_one(selector, options)
end

#map_reduce(map, reduce, options = {}) ⇒ Object Also known as: mapreduce

Perform a map/reduce on the documents.

Options:

map: The map javascript funcdtion. reduce: The reduce javascript function.



88
89
90
# File 'lib/mongoid/collection.rb', line 88

def map_reduce(map, reduce, options = {})
  directed(options).map_reduce(map, reduce, options)
end

#masterObject

Return the object responsible for writes to the database. This will always return a collection associated with the Master DB.

Example:

collection.writer



100
101
102
# File 'lib/mongoid/collection.rb', line 100

def master
  @master ||= Collections::Master.new(Mongoid.master, @name)
end

#slavesObject

Return the object responsible for reading documents from the database. This is usually the slave databases, but in their absence the master will handle the task.

Example:

collection.reader



111
112
113
# File 'lib/mongoid/collection.rb', line 111

def slaves
  @slaves ||= Collections::Slaves.new(Mongoid.slaves, @name)
end