module Mongoid::Finders
This module defines the finder methods that hang off the document at the class level.
Public Instance Methods
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
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
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 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 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
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
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