Sha256: 7e273f679abfdee85912c32885ba58aadf1e47db6927704a257cf7f80bd3c89b

Contents?: true

Size: 955 Bytes

Versions: 35

Compression:

Stored size: 955 Bytes

Contents

module Mongoid
  module Matcher

    # @api private
    module Expression
      module_function def matches?(document, expr)
        if expr.nil?
          raise Errors::InvalidQuery, "Nil condition in expression context"
        end
        unless Hash === expr
          raise Errors::InvalidQuery, "MQL query must be provided as a Hash"
        end
        expr.all? do |k, expr_v|
          k = k.to_s
          if k == "$comment"
            # Nothing
            return true
          end
          if k.start_with?('$')
            ExpressionOperator.get(k).matches?(document, expr_v)
          else
            values = Matcher.extract_attribute(document, k)
            if values.length > 0
              values.any? do |v|
                FieldExpression.matches?(true, v, expr_v)
              end
            else
              FieldExpression.matches?(false, nil, expr_v)
            end
          end
        end
      end
    end
  end
end

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
mongoid-8.0.10 lib/mongoid/matcher/expression.rb
mongoid-8.1.10 lib/mongoid/matcher/expression.rb
mongoid-8.1.9 lib/mongoid/matcher/expression.rb
mongoid-8.0.9 lib/mongoid/matcher/expression.rb
mongoid-8.1.8 lib/mongoid/matcher/expression.rb
mongoid-8.1.7 lib/mongoid/matcher/expression.rb
mongoid-8.1.6 lib/mongoid/matcher/expression.rb
mongoid-8.0.8 lib/mongoid/matcher/expression.rb
mongoid-8.1.5 lib/mongoid/matcher/expression.rb
mongoid-8.1.4 lib/mongoid/matcher/expression.rb
mongoid-8.0.7 lib/mongoid/matcher/expression.rb
mongoid-8.1.3 lib/mongoid/matcher/expression.rb
mongoid-8.1.2 lib/mongoid/matcher/expression.rb
mongoid-8.0.6 lib/mongoid/matcher/expression.rb
mongoid-7.5.4 lib/mongoid/matcher/expression.rb
mongoid-8.1.1 lib/mongoid/matcher/expression.rb
mongoid-8.0.5 lib/mongoid/matcher/expression.rb
mongoid-8.1.0 lib/mongoid/matcher/expression.rb
mongoid-7.5.3 lib/mongoid/matcher/expression.rb
mongoid-8.0.4 lib/mongoid/matcher/expression.rb