我有这种类型的图表:
(a)->[r1]->(b)-[r1]->(c)->[r1]->(d)
...。此外,每个节点可能还有一个或多个关系r2
,例如:
(b)->[r2]->(G)
(b)->[r2]->(K)
等等,或者:
(c)->[r2]->(G)
(c)->[r2]->(K)
。
如果我使用这样的查询:
MATCH (n1)-[r]->(n2)-[r1]->(n3)-[r2]->(n4)-[r3]->(n5)-[r4]->(n6)
WHERE n1.property = "`DEF9747D6`"
RETURN r,r1,r2,r3,r4,n1,n2,n3,n4,n5,n6 LIMIT 10
它只返回从n1到n6的指定节点和关系,但在链接包含多少个节点之前我不知道的问题。
所以我需要一个查询,即使我在中间指定了一个属性节点,也可以返回所有链和关系。例如:
我指定了一些(c.Property
)并且查询必须返回所有链形式(a)和结束以及所有关系r1
和r2
。
你可以帮我解决一下这个问题吗?
答案 0 :(得分:0)
以下查询应该有效:
MATCH p = (n1)-[:n1|:n2*]->()
WHERE n1.property = "`DEF9747D6`"
RETURN relationships(p), nodes(p)
LIMIT 10
此查询使用variable-length pattern matching到MATCH
所有模式,从具有n1.property =" DEF9747D6
"的节点开始。横穿:n1
和:n2
类型的关系。函数relationships()和nodes()用于返回每个路径中的所有关系和节点。
提示:使用关系类型时,请记住在类型名称前面添加:
。即:使用:n1
代替n1
。