module Mongoid::Finders

This module defines the finder methods that hang off the document at the class level.

Public Instance Methods

count() click to toggle source

Returns a count of records in the database. If you want to specify conditions use where.

@example Get the count of matching documents.

Person.count
Person.where(title: "Sir").count

@return [ Integer ] The number of matching documents.

# File lib/mongoid/finders.rb, line 44
def count
  with_default_scope.count
end
empty?() click to toggle source

Returns true if count is zero

@example Are there no saved documents for this model?

Person.empty?

@return [ true, false ] If the collection is empty.

# File lib/mongoid/finders.rb, line 54
def empty?
  count == 0
end
exists?() click to toggle source

Returns true if there are on document in database based on the provided arguments.

@example Do any documents exist for the conditions?

Person.exists?

@param [ Array ] args The conditions.

# File lib/mongoid/finders.rb, line 65
def exists?
  with_default_scope.exists?
end
find(*args) click to toggle source

Find a Document in several different ways.

If a String is provided, it will be assumed that it is a representation of a Mongo::ObjectID and will attempt to find a single Document based on that id. If a Symbol and Hash is provided then it will attempt to find either a single Document or multiples based on the conditions provided and the first parameter.

@example Find a single document by an id.

Person.find(Moped::BSON::ObjectId)

@param [ Array ] args An assortment of finder options.

@return [ Document, nil, Criteria ] A document or matching documents.

# File lib/mongoid/finders.rb, line 83
def find(*args)
  with_default_scope.find(*args)
end
find_by(attrs = {}) { |result| ... } click to toggle source

Find the first Document given the conditions, or raises Mongoid::Errors::DocumentNotFound

@example Find the document by attribute other than id

Person.find_by(:username => "superuser")

@param [ Hash ] attrs The attributes to check.

@raise [ Errors::DocumentNotFound ] If no document found.

@return [ Document ] A matching document.

@since 3.0.0

# File lib/mongoid/finders.rb, line 100
def find_by(attrs = {})
  result = where(attrs).first
  if result.nil? && Mongoid.raise_not_found_error
    raise(Errors::DocumentNotFound.new(self, attrs))
  end
  yield(result) if result && block_given?
  result
end
first() click to toggle source

Find the first Document given the conditions.

@example Find the first document.

Person.first

@return [ Document ] The first matching document.

# File lib/mongoid/finders.rb, line 115
def first
  with_default_scope.first
end
last() click to toggle source

Find the last Document given the conditions.

@example Find the last document.

Person.last

@return [ Document ] The last matching document.

# File lib/mongoid/finders.rb, line 125
def last
  with_default_scope.last
end