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

时间:2016-08-23 11:14:17

标签: neo4j cypher

我正在Cypher和Neo4j采取一些步骤,并试图了解密码如何处理“变量”。

具体来说,我有一个查询

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对内部工作有任何见解......

0 个答案:

没有答案