module Mongoid::Persistable::Incrementable

Defines behaviour for $inc operations.

@since 4.0.0

Public Instance Methods

inc(increments) click to toggle source

Increment the provided fields by the corresponding values. Values can be positive or negative, and if no value exists for the field it will be set with the provided value.

@example Increment the fields.

document.inc(score: 10, place: 1, lives: -10)

@param [ Hash ] increments The field/inc increment pairs.

@return [ true, false ] If the increment succeeded.

@since 4.0.0

# File lib/mongoid/persistable/incrementable.rb, line 23
def inc(increments)
  prepare_atomic_operation do |ops|
    process_atomic_operations(increments) do |field, value|
      increment = value.__to_inc__
      current = attributes[field]
      attributes[field] = (current || 0) + increment
      ops[atomic_attribute_name(field)] = increment
    end
    { "$inc" => ops }
  end
end