Module: Mongoid::Contextual::Atomic
- Defined in:
- lib/mongoid/contextual/atomic.rb
Overview
Mixin module included in Mongoid::Criteria which provides a direct method interface to MongoDB's Update Operators ($set, $pull, $inc, etc.) These operators can be applied to update all documents in the database within the criteria scope, without loading each document into Mongoid's memory.
Instance Method Summary collapse
-
#add_each_to_set(adds) ⇒ nil
Perform an atomic $addToSet/$each on the matching documents.
-
#add_to_set(adds) ⇒ nil
Execute an atomic $addToSet on the matching documents.
-
#bit(bits) ⇒ nil
Perform an atomic $bit operation on the matching documents.
-
#inc(incs) ⇒ nil
Perform an atomic $inc operation on the matching documents.
-
#mul(factors) ⇒ nil
Perform an atomic $mul operation on the matching documents.
-
#pop(pops) ⇒ nil
Perform an atomic $pop operation on the matching documents.
-
#pull(pulls) ⇒ nil
Perform an atomic $pull operation on the matching documents.
-
#pull_all(pulls) ⇒ nil
Perform an atomic $pullAll operation on the matching documents.
-
#push(pushes) ⇒ nil
Perform an atomic $push operation on the matching documents.
-
#push_all(pushes) ⇒ nil
Perform an atomic $push/$each operation on the matching documents.
-
#rename(renames) ⇒ nil
Perform an atomic $rename of fields on the matching documents.
-
#set(sets) ⇒ nil
Perform an atomic $set of fields on the matching documents.
-
#set_max(fields) ⇒ nil
(also: #clamp_lower_bound)
Performs an atomic $max update operation on the given field or fields.
-
#set_min(fields) ⇒ nil
(also: #clamp_upper_bound)
Performs an atomic $min update operation on the given field or fields.
-
#unset(*unsets) ⇒ nil
Perform an atomic $unset of a field on the matching documents.
Instance Method Details
#add_each_to_set(adds) ⇒ nil
Perform an atomic $addToSet/$each on the matching documents.
31 32 33 |
# File 'lib/mongoid/contextual/atomic.rb', line 31 def add_each_to_set(adds) view.update_many('$addToSet' => collect_each_operations(adds)) end |
#add_to_set(adds) ⇒ nil
Execute an atomic $addToSet on the matching documents.
19 20 21 |
# File 'lib/mongoid/contextual/atomic.rb', line 19 def add_to_set(adds) view.update_many('$addToSet' => collect_operations(adds)) end |
#bit(bits) ⇒ nil
Perform an atomic $bit operation on the matching documents.
43 44 45 |
# File 'lib/mongoid/contextual/atomic.rb', line 43 def bit(bits) view.update_many('$bit' => collect_operations(bits)) end |
#inc(incs) ⇒ nil
Perform an atomic $inc operation on the matching documents.
55 56 57 |
# File 'lib/mongoid/contextual/atomic.rb', line 55 def inc(incs) view.update_many('$inc' => collect_operations(incs)) end |
#mul(factors) ⇒ nil
Perform an atomic $mul operation on the matching documents.
67 68 69 |
# File 'lib/mongoid/contextual/atomic.rb', line 67 def mul(factors) view.update_many('$mul' => collect_operations(factors)) end |
#pop(pops) ⇒ nil
Perform an atomic $pop operation on the matching documents.
82 83 84 |
# File 'lib/mongoid/contextual/atomic.rb', line 82 def pop(pops) view.update_many('$pop' => collect_operations(pops)) end |
#pull(pulls) ⇒ nil
Expression pulling is not yet supported.
Perform an atomic $pull operation on the matching documents.
96 97 98 |
# File 'lib/mongoid/contextual/atomic.rb', line 96 def pull(pulls) view.update_many('$pull' => collect_operations(pulls)) end |
#pull_all(pulls) ⇒ nil
Perform an atomic $pullAll operation on the matching documents.
108 109 110 |
# File 'lib/mongoid/contextual/atomic.rb', line 108 def pull_all(pulls) view.update_many('$pullAll' => collect_operations(pulls)) end |
#push(pushes) ⇒ nil
Perform an atomic $push operation on the matching documents.
120 121 122 |
# File 'lib/mongoid/contextual/atomic.rb', line 120 def push(pushes) view.update_many('$push' => collect_operations(pushes)) end |
#push_all(pushes) ⇒ nil
Perform an atomic $push/$each operation on the matching documents.
132 133 134 |
# File 'lib/mongoid/contextual/atomic.rb', line 132 def push_all(pushes) view.update_many('$push' => collect_each_operations(pushes)) end |
#rename(renames) ⇒ nil
Perform an atomic $rename of fields on the matching documents.
144 145 146 147 148 149 |
# File 'lib/mongoid/contextual/atomic.rb', line 144 def rename(renames) operations = renames.each_with_object({}) do |(old_name, new_name), ops| ops[old_name] = new_name.to_s end view.update_many('$rename' => collect_operations(operations)) end |
#set(sets) ⇒ nil
Perform an atomic $set of fields on the matching documents.
159 160 161 |
# File 'lib/mongoid/contextual/atomic.rb', line 159 def set(sets) view.update_many('$set' => collect_operations(sets)) end |
#set_max(fields) ⇒ nil Also known as: clamp_lower_bound
Because of the existence of Mongoid::Contextual::Aggregable::Mongo#max, this method cannot be named #max, and thus breaks that convention of other similar methods of being named for the MongoDB operation they perform.
Performs an atomic $max update operation on the given field or fields. Each field will be set to the maximum of [current_value, given value]. This has the effect of making sure that each field is no smaller than the given value; in other words, the given value is the effective minimum for that field.
219 220 221 |
# File 'lib/mongoid/contextual/atomic.rb', line 219 def set_max(fields) view.update_many('$max' => collect_operations(fields)) end |
#set_min(fields) ⇒ nil Also known as: clamp_upper_bound
Because of the existence of Mongoid::Contextual::Aggregable::Mongo#min, this method cannot be named #min, and thus breaks that convention of other similar methods of being named for the MongoDB operation they perform.
Performs an atomic $min update operation on the given field or fields. Each field will be set to the minimum of [current_value, given value]. This has the effect of making sure that each field is no larger than the given value; in other words, the given value is the effective maximum for that field.
196 197 198 |
# File 'lib/mongoid/contextual/atomic.rb', line 196 def set_min(fields) view.update_many('$min' => collect_operations(fields)) end |
#unset(*unsets) ⇒ nil
Perform an atomic $unset of a field on the matching documents.
174 175 176 |
# File 'lib/mongoid/contextual/atomic.rb', line 174 def unset(*unsets) view.update_many('$unset' => collect_unset_operations(unsets)) end |