# 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