Neo4j 如何查询包含某个节点的所有链?
我有这种类型的图表:Neo4j 如何查询包含某个节点的所有链?,neo4j,cypher,Neo4j,Cypher,我有这种类型的图表: (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) WH
(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的关系,但问题是我之前不知道链包含多少节点
<>所以我需要一个查询,它可以返回所有链和关系,即使我在中间指定了一个属性节点。例如:
(b)->[r2]->(G)
我指定了一些(c.Property
),查询必须返回所有链表单(a)和结束以及所有关系r1
和r2
您能帮我查询一下吗?下面的查询应该可以:
MATCH p = (n1)-[:n1|:n2*]->()
WHERE n1.property = "`DEF9747D6`"
RETURN relationships(p), nodes(p)
LIMIT 10
此查询使用a来匹配从具有n1.property=“DEF9747D6
”的节点开始的所有模式,这些模式跨越类型为:n1
和:n2
的关系。函数和用于从每个路径返回所有关系和节点
提示:处理关系类型时,请记住在类型名称之前添加:
。那就是:用:n1
代替n1
太好了,亲爱的布鲁诺·佩雷斯!这个搜索对我来说很有效。非常感谢你!嗨,安德鲁,不客气!如果这个答案已经解决了你的问题,请通过点击复选标记来考虑。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。对我有用的小修改:匹配p=()-[]->(n1)-[]->(),其中n1.property=“DEF9747D6
”返回关系(p),节点(p)限制100