{"record":{"id":"54fc9e6692e76a29","repo":"mongodb/mongoid","slug":"size-argument-must-be-a-non-negative-integer-e","errorCode":null,"errorMessage":"$size argument must be a non-negative integer: #{Errors::InvalidQuery.truncate_expr(condition)}","messagePattern":"\\$size argument must be a non-negative integer: #(.+?)","errorType":"exception","errorClass":"Mongoid::Errors::InvalidQuery","httpStatus":null,"severity":"error","filePath":"lib/mongoid/matcher/size.rb","lineNumber":22,"sourceCode":"    #\n    # @see https://www.mongodb.com/docs/manual/reference/operator/query/size/\n    #\n    # @api private\n    module Size\n      # Returns whether a value satisfies a $size expression.\n      #\n      # @param [ true | false ] exists Not used.\n      # @param [ Numeric ] value The value to check.\n      # @param [ Integer | Array<Object> ] condition The $size condition\n      #   predicate, either a non-negative Integer or an Array to match size.\n      #\n      # @return [ true | false ] Whether the value matches.\n      #\n      # @api private\n      module_function def matches?(_exists, value, condition)\n        case condition\n        when Float\n          raise Errors::InvalidQuery, \"$size argument must be a non-negative integer: #{Errors::InvalidQuery.truncate_expr(condition)}\"\n        when Numeric\n          if condition < 0\n            raise Errors::InvalidQuery, \"$size argument must be a non-negative integer: #{Errors::InvalidQuery.truncate_expr(condition)}\"\n          end\n        else\n          raise Errors::InvalidQuery, \"$size argument must be a non-negative integer: #{Errors::InvalidQuery.truncate_expr(condition)}\"\n        end\n\n        if value.is_a?(Array)\n          value.length == condition\n        else\n          false\n        end\n      end\n    end\n  end\nend\n","sourceCodeStart":4,"sourceCodeEnd":40,"githubUrl":"https://github.com/mongodb/mongoid/blob/0da0e23d71adfbad31128c18e5e2c8c301c6f7c4/lib/mongoid/matcher/size.rb#L4-L40","documentation":"Error \"$size argument must be a non-negative integer: #{Errors::InvalidQuery.truncate_expr(condition)}\" thrown in mongodb/mongoid.","triggerScenarios":"Thrown at lib/mongoid/matcher/size.rb:22 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"0da0e23d71adfbad31128c18e5e2c8c301c6f7c4","analyzedAt":"2026-08-23T06:25:47.656Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}