# File lib/mongoid/matchers/strategies.rb, line 52
      def matcher(document, key, value)
        if value.is_a?(Hash)
          matcher = MATCHERS[value.keys.first]
          if matcher
            matcher.new(extract_attribute(document, key))
          else
            Default.new(extract_attribute(document, key))
          end
        else
          case key
            when "$or" then Matchers::Or.new(value, document)
            when "$and" then Matchers::And.new(value, document)
            else Default.new(extract_attribute(document, key))
          end
        end
      end