Module: Mongoo::Persistence::ClassMethods

Defined in:
lib/mongoo/persistence.rb

Instance Method Summary collapse

Instance Method Details

#allObject



117
118
119
# File 'lib/mongoo/persistence.rb', line 117

def all
  find
end

#collectionObject



73
74
75
# File 'lib/mongoo/persistence.rb', line 73

def collection
  @collection ||= db.collection(collection_name)
end

#collection_name(val = nil) ⇒ Object



36
37
38
39
40
41
42
# File 'lib/mongoo/persistence.rb', line 36

def collection_name(val=nil)
  if val
    @collection_name = val
  else
    @collection_name ||= self.model_name.tableize
  end
end

#connObject



59
60
61
# File 'lib/mongoo/persistence.rb', line 59

def conn
  @_conn ||= ((@conn_lambda && @conn_lambda.call) || Mongoo.conn)
end

#conn=(conn_lambda) ⇒ Object



44
45
46
47
48
49
50
# File 'lib/mongoo/persistence.rb', line 44

def conn=(conn_lambda)
  @conn_lambda = conn_lambda
  @_conn = nil
  @_db = nil
  @collection = nil
  @conn_lambda
end

#countObject



133
134
135
# File 'lib/mongoo/persistence.rb', line 133

def count
  collection.count
end

#create_indexesObject



150
151
152
153
154
155
# File 'lib/mongoo/persistence.rb', line 150

def create_indexes
  self.index_meta.each do |spec, opts|
    opts[:background] = true if !opts.has_key?(:background)
    collection.create_index(spec, opts)
  end; true
end

#dbObject



63
64
65
66
67
68
69
70
71
# File 'lib/mongoo/persistence.rb', line 63

def db
  @_db ||= begin
    if db_name = (@db_name || (@conn_lambda && Mongoo.db.name))
      conn.db(db_name)
    else
      Mongoo.db
    end
  end
end

#db=(db_name) ⇒ Object



52
53
54
55
56
57
# File 'lib/mongoo/persistence.rb', line 52

def db=(db_name)
  @db_name = db_name
  @_db = nil
  @collection = nil
  @db_name
end

#dropObject



137
138
139
# File 'lib/mongoo/persistence.rb', line 137

def drop
  collection.drop
end

#eachObject



121
122
123
# File 'lib/mongoo/persistence.rb', line 121

def each
  find.each { |found| yield(found) }
end

#empty?Boolean

Returns:

  • (Boolean)


129
130
131
# File 'lib/mongoo/persistence.rb', line 129

def empty?
  count == 0
end

#find(query = {}, opts = {}) ⇒ Object



97
98
99
# File 'lib/mongoo/persistence.rb', line 97

def find(query={}, opts={})
  Mongoo::Cursor.new(self, collection.find(query, opts))
end

#find_and_modify(opts) ⇒ Hash

Atomically update and return a document using MongoDB’s findAndModify command. (MongoDB > 1.3.0)

Parameters:

  • opts (Hash)

    a customizable set of options

Options Hash (opts):

  • :query (Hash) — default: {}

    a query selector document for matching the desired document.

  • :update (Hash) — default: nil

    the update operation to perform on the matched document.

  • :sort (Array, String, OrderedHash) — default: {}

    specify a sort option for the query using any of the sort options available for Cursor#sort. Sort order is important if the query will be matching multiple documents since only the first matching document will be updated and returned.

  • :remove (Boolean) — default: false

    If true, removes the the returned document from the collection.

  • :new (Boolean) — default: false

    If true, returns the updated document; otherwise, returns the document prior to update.

Returns:

  • (Hash)

    the matched document.



91
92
93
94
95
# File 'lib/mongoo/persistence.rb', line 91

def find_and_modify(opts)
  if doc = collection.find_and_modify(opts)
    Mongoo::Cursor.new(self, nil).obj_from_doc(doc)
  end
end

#find_one(query = {}, opts = {}) ⇒ Object



101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/mongoo/persistence.rb', line 101

def find_one(query={}, opts={})
  id_map_on = Mongoo::IdentityMap.on?
  is_simple_query = nil
  is_simple_query = Mongoo::IdentityMap.simple_query?(query, opts) if id_map_on

  if id_map_on && is_simple_query
    if doc = Mongoo::IdentityMap.read(query)
      return doc
    end
  end

  if doc = collection.find_one(query, opts)
    Mongoo::Cursor.new(self, nil).obj_from_doc(doc)
  end
end

#firstObject



125
126
127
# File 'lib/mongoo/persistence.rb', line 125

def first
  find.limit(1).next_document
end

#index(spec, opts = {}) ⇒ Object



146
147
148
# File 'lib/mongoo/persistence.rb', line 146

def index(spec, opts={})
  self.index_meta[spec] = opts
end

#index_metaObject



141
142
143
144
# File 'lib/mongoo/persistence.rb', line 141

def index_meta
  return @index_meta if @index_meta
  @index_meta = {}
end