在Neo4j中,Cypher是一种用于查询图形数据库的语言
- 使用
WITH
子句进行中间连接(Intermediate Joins):
MATCH (a:Person {name: 'Alice'}) WITH a MATCH (a)-[:KNOWS]->(b:Person) RETURN a, b
在这个例子中,我们首先匹配名为"Alice"的人(Person),然后使用WITH
子句将结果传递给下一个MATCH
子句,该子句查找与Alice有认识关系(KNOWS)的其他人。最后,我们返回Alice和与她认识的人。
- 使用
JOIN
关键字进行连接(Explicit Joins):
MATCH (a:Person {name: 'Alice'}) JOIN (b:Person) ON a-[:KNOWS]->b RETURN a, b
在这个例子中,我们首先匹配名为"Alice"的人(Person),然后使用JOIN
关键字将结果与另一个子查询进行连接,该子查询查找所有的人(Person)。连接条件是Alice与另一个人之间存在认识关系(KNOWS)。最后,我们返回Alice和与她认识的人。
- 使用
WHERE
子句进行过滤连接(Filtered Joins):
MATCH (a:Person {name: 'Alice'}) MATCH (a)-[:KNOWS]->(b:Person) WHERE b.age > 30 RETURN a, b
在这个例子中,我们首先匹配名为"Alice"的人(Person),然后使用MATCH
子句查找与Alice有认识关系(KNOWS)的其他人。接下来,我们使用WHERE
子句过滤出年龄大于30岁的人。最后,我们返回Alice和与她认识且年龄大于30岁的人。
这些示例展示了如何在Cypher子句中进行连接查询。您可以根据您的需求选择合适的方法。