@attribute [r] root The root document. @attribute [r] path The atomic path. @attribute [r] selector The root document selector. @attribute [r] matching The in memory documents that match the selector.
@attribute [r] root The root document. @attribute [r] path The atomic path. @attribute [r] selector The root document selector. @attribute [r] matching The in memory documents that match the selector.
Create the new in memory context.
@example Create the new context.
Memory.new(criteria)
@param [ Criteria ] The criteria.
@since 3.0.0
# File lib/mongoid/contextual/memory.rb, line 145 def initialize(criteria) @criteria, @klass = criteria, criteria.klass @documents = criteria.documents.select do |doc| @root ||= doc._root @collection ||= root.collection doc.matches?(criteria.selector) end apply_sorting apply_options end
Check if the context is equal to the other object.
@example Check equality.
context == []
@param [ Array ] other The other array.
@return [ true, false ] If the objects are equal.
@since 3.0.0
# File lib/mongoid/contextual/memory.rb, line 28 def ==(other) return false unless other.respond_to?(:entries) entries == other.entries end
Delete all documents in the database that match the selector.
@example Delete all the documents.
context.delete
@return [ nil ] Nil.
@since 3.0.0
# File lib/mongoid/contextual/memory.rb, line 41 def delete deleted = count removed = map do |doc| prepare_remove(doc) doc.as_document end unless removed.empty? collection.find(selector).update( positionally(selector, "$pullAll" => { path => removed }) ) end deleted end
Destroy all documents in the database that match the selector.
@example Destroy all the documents.
context.destroy
@return [ nil ] Nil.
@since 3.0.0
# File lib/mongoid/contextual/memory.rb, line 64 def destroy deleted = count each do |doc| documents.delete_one(doc) doc.destroy end deleted end
Get the distinct values in the db for the provided field.
@example Get the distinct values.
context.distinct(:name)
@param [ String, Symbol ] field The name of the field.
@return [ Array<Object> ] The distinct values for the field.
@since 3.0.0
# File lib/mongoid/contextual/memory.rb, line 84 def distinct(field) documents.map{ |doc| doc.send(field) }.uniq end
Iterate over the context. If provided a block, yield to a Mongoid document for each, otherwise return an enum.
@example Iterate over the context.
context.each do |doc| puts doc.name end
@return [ Enumerator ] The enumerator.
@since 3.0.0
# File lib/mongoid/contextual/memory.rb, line 99 def each if block_given? documents_for_iteration.each do |doc| yield(doc) end # eager_loadable? ? docs : self else to_enum end end
Do any documents exist for the context.
@example Do any documents exist for the context.
context.exists?
@return [ true, false ] If the count is more than zero.
@since 3.0.0
# File lib/mongoid/contextual/memory.rb, line 118 def exists? count > 0 end
Get the first document in the database for the criteria's selector.
@example Get the first document.
context.first
@return [ Document ] The first document.
@since 3.0.0
# File lib/mongoid/contextual/memory.rb, line 130 def first doc = documents.first eager_load_one(doc) if eager_loadable?(doc) doc end
Get the last document in the database for the criteria's selector.
@example Get the last document.
context.last
@return [ Document ] The last document.
@since 3.0.0
# File lib/mongoid/contextual/memory.rb, line 164 def last doc = documents.last eager_load_one(doc) if eager_loadable?(doc) doc end
Get the length of matching documents in the context.
@example Get the length of matching documents.
context.length
@return [ Integer ] The matching length.
@since 3.0.0
# File lib/mongoid/contextual/memory.rb, line 178 def length documents.length end
Limits the number of documents that are returned.
@example Limit the documents.
context.limit(20)
@param [ Integer ] value The number of documents to return.
@return [ Mongo ] The context.
@since 3.0.0
# File lib/mongoid/contextual/memory.rb, line 193 def limit(value) self.limiting = value self end
Skips the provided number of documents.
@example Skip the documents.
context.skip(20)
@param [ Integer ] value The number of documents to skip.
@return [ Mongo ] The context.
@since 3.0.0
# File lib/mongoid/contextual/memory.rb, line 208 def skip(value) self.skipping = value self end
Sorts the documents by the provided spec.
@example Sort the documents.
context.sort(name: -1, title: 1)
@param [ Hash ] values The sorting values as field/direction(1/-1)
pairs.
@return [ Mongo ] The context.
@since 3.0.0
# File lib/mongoid/contextual/memory.rb, line 224 def sort(values) in_place_sort(values) and self end
Update the first matching document atomically.
@example Update the matching document.
context.update(name: "Smiths")
@param [ Hash ] attributes The new attributes for the document.
@return [ nil, false ] False if no attributes were provided.
@since 3.0.0
# File lib/mongoid/contextual/memory.rb, line 238 def update(attributes = nil) update_documents(attributes, [ first ]) end
Update all the matching documents atomically.
@example Update all the matching documents.
context.update_all(name: "Smiths")
@param [ Hash ] attributes The new attributes for each document.
@return [ nil, false ] False if no attributes were provided.
@since 3.0.0
# File lib/mongoid/contextual/memory.rb, line 252 def update_all(attributes = nil) update_documents(attributes, entries) end
Generated with the Darkfish Rdoc Generator 2.