我在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
这不会是我想要的工作。现在,在代码中,我使用了两次匹配子句(第2行和第3行),以便变量(c)和(d)在第4行的最终匹配之前基本包含相同的节点。 我可以编写查询而不必重复第二个匹配条款?使用
match (A {name: "A"})
match (A)<-[:st*]-(B)-[:hp]->(b)
match (b)-[:st]->(b)
return b
似乎是非常不同的东西,没有返回因为没有:从(B)到自身节点ST类型的关系。我的理解到目前为止,即使(b)和(c)中包含相同的节点,
match (c)-[:st]->(b)
试图找到的(c)任何节点和(b)任何节点之间的匹配,而
match (b)-[:st]->(b)
试图从(b)的特定节点查找匹配到自己?还是说,人们必须将3个匹配条款视为一个整体模式?
thanx的任何洞察到内部工作...