Apache Cypher是一个用于查询图形数据库的声明式查询语言
-
使用MATCH子句定义要匹配的模式: MATCH子句用于描述你想在图形数据库中查找的模式。它可以包含节点、关系和属性。例如,如果你想查找具有特定属性的节点,可以使用以下语法:
MATCH (n:Person {name: 'John Doe'})
这将查找具有标签
Person
且属性name
为John Doe
的所有节点。 -
使用WHERE子句过滤结果: 在MATCH子句之后,可以使用WHERE子句对结果进行过滤。例如,如果你想查找与特定节点相连的所有节点,可以使用以下语法:
MATCH (n:Person {name: 'John Doe'})-[:FRIENDS]-(friends) WHERE friends.age > 25
这将查找与具有名称
John Doe
的人相连的所有节点,但只返回年龄大于25的朋友节点。 -
使用RETURN子句选择返回的节点和关系: 在MATCH和WHERE子句之后,可以使用RETURN子句选择要返回的节点和关系。例如,如果你想返回名为
John Doe
的人的节点及其所有朋友节点的名称,可以使用以下语法:MATCH (n:Person {name: 'John Doe'})-[:FRIENDS]-(friends) WHERE friends.age > 25 RETURN n, friends
这将返回名为
John Doe
的人的节点及其所有年龄大于25的朋友节点的名称。 -
使用OPTIONAL子句处理可选关系: 如果你想查询具有或不具有特定关系的节点,可以使用OPTIONAL子句。例如,如果你想查找与名为
John Doe
的人相连的所有节点,无论是否存在关系,可以使用以下语法:MATCH (n:Person {name: 'John Doe'})-[:FRIENDS*1..]-(friends) RETURN n, friends
这将返回名为
John Doe
的人的节点及其所有朋友节点,即使某些朋友节点与John Doe
之间没有直接的关系。 -
使用聚合函数和GROUP BY子句进行分组和聚合操作: 如果你想对查询结果进行分组和聚合操作,可以使用聚合函数(如COUNT、SUM、AVG等)和GROUP BY子句。例如,如果你想计算每个朋友的年龄总和,可以使用以下语法:
MATCH (n:Person {name: 'John Doe'})-[:FRIENDS]-(friends) RETURN friends, SUM(friends.age) AS total_age GROUP BY friends
这将返回名为
John Doe
的人的所有朋友节点及其年龄总和。