n8n-io/n8n · warning · OperationalError
Unsupported operator: ${operator}
Error message
Unsupported operator: ${operator} What it means
OperationalError from buildFilter's default case: the operator string (compared case-insensitively) did not match any supported branch (equal, like, containsany, containsall, greaterthan, lessthan, isnull, withingeorange). The switch cannot build a filter for an unknown operator.
Source
Thrown at packages/@n8n/nodes-langchain/nodes/vector_store/VectorStoreWeaviate/Weaviate.utils.ts:121
if (filter.valueNumber === undefined) {
throw new OperationalError("Missing 'valueNumber' for 'lessThan' operator.");
}
return property.lessThan(filter.valueNumber);
case 'isnull':
if (filter.valueBoolean === undefined) {
throw new OperationalError("Missing 'valueBoolean' for 'isNull' operator.");
}
return property.isNull(filter.valueBoolean);
case 'withingeorange':
if (!filter.valueGeoCoordinates) {
throw new OperationalError("Missing 'valueGeoCoordinates' for 'withinGeoRange' operator.");
}
return property.withinGeoRange(filter.valueGeoCoordinates);
default:
throw new OperationalError(`Unsupported operator: ${operator}`);
}
throw new OperationalError(`No valid filter value provided for operator: ${operator}`);
}
export function parseCompositeFilter(
filter: WeaviateCompositeFilter | WeaviateFilterUnit,
): FilterValue {
// Handle composite filters (AND/OR)
if (typeof filter === 'object' && ('AND' in filter || 'OR' in filter)) {
if ('AND' in filter) {
return Filters.and(...filter.AND.map(buildFilter));
} else if ('OR' in filter) {
return Filters.or(...filter.OR.map(buildFilter));
}
}
// Handle individual filter unitsView on GitHub (pinned to 5ac6606e81)
Solutions
- Use one of the supported operators: equal, like, containsAny, containsAll, greaterThan, lessThan, isNull, withinGeoRange.
- Trim and sanity-check the operator string before building the filter.
- If you need an unsupported operator, combine supported ones via a composite AND/OR filter instead.
- After an upgrade, re-check the supported operator list in Weaviate.utils.ts.
Example fix
// before: { operator: 'not_equal', path: ['status'], valueString: 'draft' }
// after: // weaviate has no not_equal here; invert with a different model field or compose filters Defensive patterns
Strategy: validation
Validate before calling
const SUPPORTED = new Set(['equal','like','containsany','containsall','greaterthan','lessthan','isnull','withingeorange']); if (!SUPPORTED.has(f.operator.toLowerCase().trim())) { throw new Error(`Unsupported operator: ${f.operator}`); } Type guard
function isSupportedOperator(op: unknown): op is string { return typeof op === 'string' && new Set(['equal','like','containsany','containsall','greaterthan','lessthan','isnull','withingeorange']).has(op.toLowerCase().trim()); } Try / catch
try { buildFilter(unit) } catch (e) { if (/Unsupported operator/.test(e.message)) { /* map to supported operator or drop filter */ } else throw e; } Prevention
- Trim and lowercase-compare operator strings before dispatch.
- Constrain operator selection in the UI to the supported list.
- After dependency upgrades, re-derive the supported set from the utils module.
When it happens
Trigger: A Weaviate filter unit carries an operator value outside the supported set, e.g. 'not_equal', 'contains', '>=', 'GreaterThan ' (with stray spaces), or a value produced by a typo/expression.
Common situations: Typo in operator string; caller used Weaviate-native operator names that n8n does not recognize; version change where a previously-valid operator was removed or renamed; whitespace/case artifacts from string concatenation.
Related errors
- Missing 'valueString' for 'like' operator.
- Missing 'valueTextArray' for 'containsAny' operator.
- Missing 'valueTextArray' for 'containsAll' operator.
- Missing 'valueNumber' for 'greaterThan' operator.
- Missing 'valueNumber' for 'lessThan' operator.
AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12).
Data as JSON: /api/errors/76b03d05634c237f.
Report an issue: GitHub.