def merge!(other)
      other.each_pair do |key, value|
        value = yield(convert_key(key), self[key], convert_value(value)) if block_given? && self[key]
        self[key] = value
      end
      self
    end
def merge!(other)
      other.each_pair do |key, value|
        value = yield(convert_key(key), self[key], convert_value(value)) if block_given? && self[key]
        self[key] = value
      end
      self
    end
Merge this document with another document, returning the same document in
 the process.

 @example Merge with another document.
   document.merge(name: "Bob")

 @param [ BSON::Document, Hash ] other The document/hash to merge with.

 @return [ BSON::Document ] The result of the merge.

 @since 3.0.0