Neo4j 密码匹配查询中变量的作用

Neo4j 密码匹配查询中变量的作用,neo4j,cypher,Neo4j,Cypher,我正在学习Cypher和Neo4j,并试图了解Cypher是如何处理“变量”的 具体来说,我有一个疑问 match (A {name: "A"}) match (A)<-[:st*]-(C)-[:hp]->(c) match (A)<-[:st*]-(B)-[:hp]->(b) match (c)-[:st]->(b) return b 尝试在(c)的任何节点和(b)的任何节点之间查找匹配项,而 尝试从(b)的特定节点到自身查找匹配项?还是说我们必须把3个匹配从句

我正在学习Cypher和Neo4j,并试图了解Cypher是如何处理“变量”的

具体来说,我有一个疑问

match (A {name: "A"})
match (A)<-[:st*]-(C)-[:hp]->(c)
match (A)<-[:st*]-(B)-[:hp]->(b)
match (c)-[:st]->(b)
return b
尝试在(c)的任何节点和(b)的任何节点之间查找匹配项,而

尝试从(b)的特定节点到自身查找匹配项?还是说我们必须把3个匹配从句看作一个整体模式


当您编写2个
匹配
语句时,Thanx用于深入了解内部工作…

match (A)<-[:st*]-(C)-[:hp]->(c)
match (A)<-[:st*]-(B)-[:hp]->(b)
而对于单个中间
匹配
和使用
b
两次的最终
匹配
,它只能看到:

1 2 1 (1, 1) 2 (2, 2) 1 2 1 (1, 1) 2 (2, 2) 如果你没有自我关系的话,哪一对不是有趣的


请注意,在SQL数据库中,如果在两个没有联接的表上执行
SELECT
,情况也是一样的:在编写2个
MATCH
语句时,也会得到无关结果的笛卡尔积

match (A)<-[:st*]-(C)-[:hp]->(c)
match (A)<-[:st*]-(B)-[:hp]->(b)
而对于单个中间
匹配
和使用
b
两次的最终
匹配
,它只能看到:

1 2 1 (1, 1) 2 (2, 2) 1 2 1 (1, 1) 2 (2, 2) 如果你没有自我关系的话,哪一对不是有趣的

请注意,在SQL数据库中,如果在两个没有联接的表上执行
SELECT
,情况也是一样的:也会得到不相关结果的笛卡尔积

1 2 1 (1, 1) (1, 2) 2 (2, 1) (2, 2) 1 2 1 (1, 1) 2 (2, 2)