Cypher MATCH clause cheatsheet
Table Returns
// Customer orders
MATCH (c:Customer)-[p:PURCHASED]->(o:Order)
RETURN c.companyName, COUNT(o) as order_count;
// Product details with supplier
MATCH (p:Product)<-[:SUPPLIES]-(s:Supplier)
RETURN p.productName, p.unitPrice, s.companyName;
// Order details with products
MATCH (o:Order)-[:ORDERS]->(p:Product)
RETURN o.orderID, COLLECT(p.productName) as products, SUM(p.unitPrice) as total;
Graph Path Returns
// Customer order chain
MATCH path = (c:Customer)-[:PURCHASED]->(o:Order)-[:ORDERS]->(p:Product)
RETURN path limit 100;
// Supply chain visualization
MATCH path = (s:Supplier)-[:SUPPLIES]->(p:Product)<-[:ORDERS]-(o:Order)
RETURN path limit 100;
// Customer-Employee interactions
MATCH path = (c:Customer)-[:PURCHASED]->(o:Order)<-[:SOLD]-(e:Employee)
RETURN path limit 100;
Cypher Filtering Patterns
Numeric Filters
// Price range
MATCH (p:Product)
WHERE 20 <= p.unitPrice <= 50
RETURN p.productName, p.unitPrice;
// Quantity thresholds
MATCH (o:Order)-[rel:ORDERS]->(p:Product)
WHERE rel.quantity > 100
RETURN o.orderID, p.productName, rel.quantity;
String Filters
// Starts with
MATCH (c:Customer)
WHERE c.companyName STARTS WITH 'A'
RETURN c.companyName;
// Contains
MATCH (p:Product)
WHERE p.productName CONTAINS 'Cheese'
RETURN p.productName;
// Regular expression
MATCH (p:Product)
WHERE p.productName =~ '.*Sauce.*'
RETURN p.productName;
Date Filters
// Orders in 1997
MATCH (o:Order)
WHERE o.orderDate.year = 1997
RETURN o.orderID, o.orderDate;
// Last quarter
MATCH (o:Order)
WHERE o.orderDate >= date('1997-10-01')
AND o.orderDate <= date('1997-12-31')
RETURN o.orderID;
Multiple Conditions
// Complex business rule
MATCH (c:Customer)-[:PURCHASED]->(o:Order)-[ord:ORDERS]->(p:Product)
WHERE p.unitPrice > 50
AND ord.quantity >= 10
AND c.country = 'Germany'
RETURN c.companyName, p.productName, ord.quantity;
// Using OR
MATCH (p:Product)
WHERE p.unitsInStock = 0
OR p.discontinued = true
RETURN p.productName;
Collection Filters
// Using IN
MATCH (c:Customer)
WHERE c.country IN ['France', 'Germany', 'Spain']
RETURN c.companyName, c.country;
// List comprehension
MATCH (s:Supplier)-[:SUPPLIES]->(p:Product)
WHERE ALL(x IN p.unitPrice WHERE x < 100)
RETURN s.companyName;
NULL Handling
// Missing region
MATCH (c:Customer)
WHERE c.region IS NULL
RETURN c.companyName;
// Coalesce example
MATCH (c:Customer)
RETURN c.companyName,
COALESCE(c.region, 'Unknown') as region;