WHERE

Generic Description

Predicate filter clause applied to current rows or pattern candidates.

Simple example:

MATCH (p:Person) WHERE p.age > 30 RETURN p

Consumer-Level Explanation

Use WHERE when the query must predicate filter clause applied to current rows or pattern candidates and the planner needs to see that operation as part of the Cypher row pipeline. Keep the clause explicit because it controls row grain, variable scope, and what later clauses are allowed to reference.

More Detailed Explanation

WHERE is far more than a simple boolean afterthought. In Nexyron it can combine graph element checks, string functions, list predicates, temporal filters, document-style map/list processing, and vector similarity expressions. Good WHERE usage is often the difference between a focused query and a row-explosion query.

What this clause is really for:

Useful current forms include:

Advanced Example

This example keeps WHERE inside a complete query pipeline so the clause boundary, visible variables, and returned row shape are clear to planner tooling.

MATCH (u:User)-[e:VIEWED]->(d:Document)
TIME e.ts BETWEEN datetime('2025-01-01T00:00:00Z') AND datetime('2025-02-01T00:00:00Z')
WITH u, e, d,
     date_trunc('day', e.ts) AS day_bucket,
     properties(d) AS doc_map,
     unpivot(properties(d.metadata)) AS metadata_rows,
     cosine_similarity(vector(properties(d).embedding), vector([0.22, 0.18, 0.44])) AS score
RETURN u.user_id, d.title, day_bucket, keys(doc_map) AS doc_keys, metadata_rows, score
ORDER BY score DESC
LIMIT 15

Real Use Cases

Real Limitations And Tradeoffs