{"record":{"id":"7dc4e35704f9f60f","repo":"n8n-io/n8n","slug":"missing-valuenumber-for-greaterthan-operator","errorCode":null,"errorMessage":"Missing 'valueNumber' for 'greaterThan' operator.","messagePattern":"Missing 'valueNumber' for 'greaterThan' operator\\.","errorType":"exception","errorClass":"OperationalError","httpStatus":null,"severity":"warning","filePath":"packages/@n8n/nodes-langchain/nodes/vector_store/VectorStoreWeaviate/Weaviate.utils.ts","lineNumber":98,"sourceCode":"\t\t\t\tthrow new OperationalError(\"Missing 'valueString' for 'like' operator.\");\n\t\t\t}\n\t\t\treturn property.like(filter.valueString);\n\n\t\tcase 'containsany':\n\t\t\tif (filter.valueTextArray === undefined) {\n\t\t\t\tthrow new OperationalError(\"Missing 'valueTextArray' for 'containsAny' operator.\");\n\t\t\t}\n\t\t\treturn property.containsAny(filter.valueTextArray);\n\n\t\tcase 'containsall':\n\t\t\tif (filter.valueTextArray === undefined) {\n\t\t\t\tthrow new OperationalError(\"Missing 'valueTextArray' for 'containsAll' operator.\");\n\t\t\t}\n\t\t\treturn property.containsAll(filter.valueTextArray);\n\n\t\tcase 'greaterthan':\n\t\t\tif (filter.valueNumber === undefined) {\n\t\t\t\tthrow new OperationalError(\"Missing 'valueNumber' for 'greaterThan' operator.\");\n\t\t\t}\n\t\t\treturn property.greaterThan(filter.valueNumber);\n\n\t\tcase 'lessthan':\n\t\t\tif (filter.valueNumber === undefined) {\n\t\t\t\tthrow new OperationalError(\"Missing 'valueNumber' for 'lessThan' operator.\");\n\t\t\t}\n\t\t\treturn property.lessThan(filter.valueNumber);\n\n\t\tcase 'isnull':\n\t\t\tif (filter.valueBoolean === undefined) {\n\t\t\t\tthrow new OperationalError(\"Missing 'valueBoolean' for 'isNull' operator.\");\n\t\t\t}\n\t\t\treturn property.isNull(filter.valueBoolean);\n\n\t\tcase 'withingeorange':\n\t\t\tif (!filter.valueGeoCoordinates) {\n\t\t\t\tthrow new OperationalError(\"Missing 'valueGeoCoordinates' for 'withinGeoRange' operator.\");","sourceCodeStart":80,"sourceCodeEnd":116,"githubUrl":"https://github.com/n8n-io/n8n/blob/5ac6606e81f67bb9534255570cd4e86fd8101eee/packages/@n8n/nodes-langchain/nodes/vector_store/VectorStoreWeaviate/Weaviate.utils.ts#L80-L116","documentation":"OperationalError from buildFilter when operator is 'greaterthan' but valueNumber is undefined. Greater-than requires a numeric comparison operand.","triggerScenarios":"Filter unit { operator: 'greaterthan', path: [...], /* valueNumber missing */ } reaches buildFilter.","commonSituations":"Numeric value left blank in the UI; expression mapped to a non-numeric or undefined value; JSON filter omitted valueNumber.","solutions":["Provide valueNumber: { operator: 'greaterThan', path: ['price'], valueNumber: 100 }.","Ensure the source expression yields a number (coerce with Number(...) or an explicit cast).","Remove the filter if no numeric bound applies."],"exampleFix":"// before: { operator: 'greaterThan', path: ['price'] }\n// after:  { operator: 'greaterThan', path: ['price'], valueNumber: 100 }","handlingStrategy":"validation","validationCode":"if (f.operator.toLowerCase() === 'greaterthan' && typeof f.valueNumber !== 'number') { throw new Error(\"'greaterThan' requires a numeric valueNumber\"); }","typeGuard":"function isGreaterThanComplete(f: WeaviateFilterUnit): f is WeaviateFilterUnit & { valueNumber: number } { return f.operator.toLowerCase() === 'greaterthan' && typeof f.valueNumber === 'number' && Number.isFinite(f.valueNumber); }","tryCatchPattern":"try { buildFilter(unit) } catch (e) { if (/valueNumber.*greaterThan/.test(e.message)) { /* coerce or reprompt */ } else throw e; }","preventionTips":["Coerce numeric inputs with Number(...) and reject NaN before building filters.","Pair every numeric operator with a number-typed input control in the UI.","Unit-test filter builders against missing/typed-wrong values."],"tags":["weaviate","filter","validation","operator","number"],"backgroundTag":null,"analyzedSha":"5ac6606e81f67bb9534255570cd4e86fd8101eee","analyzedAt":"2026-08-12T05:26:35.080Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}