Astro.utils.storage.applyModifier = function(doc, modifier) {
  // Apply $set modifier.
  if (modifier.$set) {
    _.each(modifier.$set, function(fieldValue, fieldPattern) {
      doc._setOne(fieldPattern, fieldValue);
    });
  }
  // Apply $inc modifier.
  if (modifier.$inc) {
    _.each(modifier.$inc, function(incValue, fieldPattern) {
      let fieldValue = doc._getOne(fieldPattern);
      doc._setOne(fieldPattern, fieldValue + incValue);
    });
  }

  Astro.utils.fields.castNested(doc);

  return {
    $set: doc.getModified()
  };
};
@@ -224,16 +224,682 @@
 %7D);%0A  %7D%0A
+%0A  // Apply $push modifier.%0A  if (modifier.$push) %7B%0A    _.each(modifier.$push, function(pushValue, fieldPattern) %7B%0A      var fieldValue = doc._getOne(fieldPattern);%0A      // If field value is empty then set it to an empty array.%0A      if (fieldValue === null %7C%7C fieldValue === undefined) %7B%0A        fieldValue = %5B%5D;%0A      %7D%0A      // If field value is not an erray then throw exception.%0A      else if (!_.isArray(fieldValue)) %7B%0A        throw new Meteor.Error(%0A          409, 'MinimongoError: Cannot apply $push modifier to non-array'%0A        );%0A      %7D%0A      // Push a value.%0A      fieldValue.push(pushValue);%0A      doc._setOne(fieldPattern, fieldValue);%0A    %7D);%0A  %7D%0A%0A
   // App
@@ -1046,24 +1046,54 @@
 ldPattern);%0A
+      fieldValue += incValue;%0A
       doc._s
@@ -1126,19 +1126,8 @@
 alue
- + incValue
 );%0A 

Add push modifier