Filtering and Ordering Results
Utilize WHERE and ORDER BY clauses to refine your query results, ensuring you retrieve precisely the data you need.
Filtering and Ordering Results is a free Neo4j Graph Database Fundamentals lesson on CoddyKit — lesson 1 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the Neo4j Graph Database Fundamentals learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.
Refine Your Graph Queries
When working with large graphs, you often need to find very specific information or present it in a particular order.
- Filtering helps you narrow down results to only what's relevant.
- Ordering helps you sort your results for better readability or analysis.
In this lesson, we'll master the WHERE and ORDER BY clauses in Cypher.
Filter Results with WHERE
The WHERE clause is used to filter patterns or properties based on specific conditions. It typically comes after a MATCH clause.
Think of it like saying: "Find me all people, WHERE their birth year is 1970."
MATCH (p:Person)
WHERE p.born = 1970
RETURN p.name AS Name, p.born AS BornYearComparison Operators
You can use various comparison operators in your WHERE clause:
=(equal to)<>(not equal to)>(greater than)<(less than)>=(greater than or equal to)<=(less than or equal to)
Let's find movies released after the year 2000.
MATCH (m:Movie)
WHERE m.released > 2000
RETURN m.title AS MovieTitle, m.released AS ReleaseYearLogical Operators (AND, OR)
Combine multiple conditions using logical operators:
AND: Both conditions must be true.OR: At least one condition must be true.XOR: Exactly one condition must be true.NOT: Negates a condition.
Find people born between 1970 and 1980 (inclusive).
MATCH (p:Person)
WHERE p.born >= 1970 AND p.born <= 1980
RETURN p.name AS Name, p.born AS BornYearString and List Operators
Cypher offers powerful operators for string matching and list containment:
CONTAINS,STARTS WITH,ENDS WITHfor partial string matches.INto check if a property value is within a list of values.
Let's find specific actors by name using IN.
MATCH (p:Person)
WHERE p.name IN ['Tom Hanks', 'Keanu Reeves', 'Carrie-Anne Moss']
RETURN p.name AS ActorNameSort Your Results with ORDER BY
The ORDER BY clause sorts your query results. It comes after RETURN (or WITH).
By default, results are sorted in ascending order (smallest to largest, A-Z).
MATCH (p:Person)
RETURN p.name AS ActorName
ORDER BY ActorNameAscending & Descending Order
You can explicitly specify the sort direction:
ASC: Ascending (A-Z, 0-9). This is the default.DESC: Descending (Z-A, 9-0).
Let's sort movies by their release year, from newest to oldest.
MATCH (m:Movie)
RETURN m.title AS MovieTitle, m.released AS ReleaseYear
ORDER BY ReleaseYear DESCMulti-Level Sorting
You can sort by multiple properties. The order in which you list them in ORDER BY matters.
Cypher will first sort by the first property, then by the second for any ties in the first, and so on.
Sort people by birth year (ascending), and then by name (ascending) for those born in the same year.
MATCH (p:Person)
RETURN p.born AS BornYear, p.name AS ActorName
ORDER BY BornYear ASC, ActorName ASCPutting it All Together
A typical Cypher query flow often involves:
MATCH: Find the graph pattern.WHERE: Filter the matched patterns.RETURN: Select the data you want.ORDER BY: Sort the returned data.
Find actors born before 1970, order them by name (descending), then by the movie title they acted in (ascending).
MATCH (p:Person)-[:ACTED_IN]->(m:Movie)
WHERE p.born < 1970
RETURN p.name AS Actor, m.title AS Movie, p.born AS BornYear
ORDER BY Actor DESC, Movie ASCFilter & Order Challenge
Which Cypher query correctly finds movies released after 1999 and orders them by title in descending order?
Recap: Refined Queries
Great job! You've learned how to precisely control your Cypher query results:
- The
WHEREclause filters data based on conditions. - The
ORDER BYclause sorts your results in ascending or descending order. - You can combine these with comparison, logical, and string/list operators for powerful filtering.
Next, we'll explore how to summarize and reshape your data with Aggregation and Projections!
Frequently asked questions
Is the “Filtering and Ordering Results” lesson free?
Yes — the full text of “Filtering and Ordering Results” is free to read here on the web, and the Neo4j Graph Database Fundamentals course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the Neo4j Graph Database Fundamentals course, upgrade to CoddyKit PRO.
What will I learn in “Filtering and Ordering Results”?
Utilize WHERE and ORDER BY clauses to refine your query results, ensuring you retrieve precisely the data you need. You practise Neo4j Graph Database Fundamentals with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.
Do I need any experience to start Neo4j Graph Database Fundamentals?
No prior experience is required. Neo4j Graph Database Fundamentals on CoddyKit is structured for beginners through advanced learners; this is — lesson 1 of 4, so you can start here or from the beginning and move at your own pace.
How long does the “Filtering and Ordering Results” lesson take?
Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.
Can I write and run code in this Neo4j Graph Database Fundamentals lesson?
Yes. Every Neo4j Graph Database Fundamentals lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.
All lessons in this course
- Filtering and Ordering Results
- Aggregation and Projections
- Updating and Deleting Graph Data
- Combining Queries with WITH and UNION