Basic Cypher Queries
Creating Nodes
Nodes are the fundamental units in a graph database. Here’s how to create nodes using Cypher:
-- Create a person node with properties
CREATE (n:Person {name: 'Alice', age: 30});
CREATE (n:Person {name: 'Bob', age: 25});
Creating Relationships
Relationships connect nodes and provide context to the data. Here’s how to create a relationship between two nodes:
MATCH (a:Person {name: 'Alice'}), (b:Person {name: 'Bob'})
CREATE (a)-[:FRIEND]->(b);
Retrieving Nodes
To retrieve nodes from the graph, use the MATCH clause followed by the RETURN clause:
MATCH (n:Person)
RETURN n;
Filtering Nodes
Filter nodes based on their properties using the WHERE clause:
MATCH (n:Person)
WHERE n.age > 25
RETURN n;
Advanced Cypher Queries
Aggregations
Cypher supports various aggregation functions such as COUNT, SUM, AVG, etc. Here’s an example of counting the number of nodes:
MATCH (n:Person)
RETURN COUNT(n) AS numberOfPersons;
Path Queries
Find paths between nodes using variable-length paths in the MATCH clause:
MATCH (a:Person {name: 'Alice'})-[*]->(b:Person)
RETURN b;
Complex Queries
Combine multiple clauses to form more complex queries:
MATCH (a:Person)-[:FRIEND]->(b:Person)
WHERE a.age > 25
RETURN a, b;
Using Indexes for Performance
Indexes can significantly improve query performance by speeding up the lookup of nodes and relationships. Create indexes on frequently queried properties:
CREATE INDEX ON :Person(name);
Practical Examples
Example 1: Finding Friends of Friends
Find friends of friends for a given person:
MATCH (a:Person {name: 'Alice'})-[:FRIEND]->(b)-[:FRIEND]->(c)
RETURN c;
Example 2: Counting Relationships
Count the number of friendships in the graph:
MATCH (:Person)-[r:FRIEND]->(:Person)
RETURN COUNT(r) AS numberOfFriendships;
Example 3: Finding Common Friends
Find common friends between two people:
MATCH (a:Person {name: 'Alice'})-[:FRIEND]->(friend)<-[:FRIEND]-(b:Person {name: 'Bob'})
RETURN friend;
Conclusion
Cypher queries in Apache AGE provide a robust and flexible way to interact with graph data. By mastering these queries, you can unlock the full potential of graph databases, making your applications more efficient and scalable. Start experimenting with Cypher queries today and explore the endless possibilities that graph databases offer.
For more information and advanced usage, refer to the official Apache AGE documentation.
Top comments (0)