mongodb/mongoid · error · Mongoid::Errors::InvalidQuery

$not argument must be a Hash or a regular expression: #{Erro

Error message

$not argument must be a Hash or a regular expression: #{Errors::InvalidQuery.truncate_expr(condition)}

What it means

Error "$not argument must be a Hash or a regular expression: #{Errors::InvalidQuery.truncate_expr(condition)}" thrown in mongodb/mongoid.

Source

Thrown at lib/mongoid/matcher/not.rb:37

      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
    end
  end
end

View on GitHub (pinned to 0da0e23d71)

When it happens

Trigger: Thrown at lib/mongoid/matcher/not.rb:37 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of mongodb/mongoid@0da0e23d71 (2026-08-23). Data as JSON: /api/errors/aec2e7987183ba2e. Report an issue: GitHub.