Module: Mongoid::Matcher::Not Private

Defined in:
build/mongoid-7.3/lib/mongoid/matcher/not.rb

This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.

Class Method Summary collapse

Class Method Details

.matches?(exists, value, condition) ⇒ Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'build/mongoid-7.3/lib/mongoid/matcher/not.rb', line 6

module_function def matches?(exists, value, condition)
  case condition
  when ::Regexp, BSON::Regexp::Raw
    !Regex.matches?(exists, value, condition)
  when Hash
    if condition.empty?
      raise Errors::InvalidQuery, "$not argument cannot be an empty hash: #{Errors::InvalidQuery.truncate_expr(condition)}"
    end

    condition.all? do |(k, cond_v)|
      k = k.to_s
      unless k.start_with?('$')
        raise Errors::InvalidQuery, "$not arguments must be operators: #{Errors::InvalidQuery.truncate_expr(k)}"
      end

      !FieldOperator.get(k).matches?(exists, value, cond_v)
    end
  else
    raise Errors::InvalidQuery, "$not argument must be a Hash or a regular expression: #{Errors::InvalidQuery.truncate_expr(condition)}"
  end
end