# File lib/mongoid/criteria.rb, line 395
    def update_selector(attributes, operator, combine = :+)
      clone.tap do |crit|
        converted = BSON::ObjectId.convert(klass, attributes || {})
        converted.each_pair do |key, value|
          existing = crit.selector[key]
          unless existing
            crit.selector[key] = { operator => value }
          else
            if existing.respond_to?(:merge)
              if existing.has_key?(operator)
                new_value = existing.values.first.send(combine, value)
                crit.selector[key] = { operator => new_value }
              else
                crit.selector[key][operator] = value
              end
            else
              crit.selector[key] = { operator => value }
            end
          end
        end
      end
    end