【发布时间】:2016-02-05 17:22:59
【问题描述】:
sMy Cypher 查询查找多个起始节点的公共子节点。每个路径只有它的节点 ID 被提取并返回,导致每个路径中有数百行。请参见 p1 和 p2 示例(仅显示 3 行和两个起点)。
Match p1=(n1:node{name:"x" })-[r:sub*]->(i)), p2=(n2:node{name:"y" })-[r:sub*]->(i))
RETURN DISTINCT i, extract(a IN nodes(p1)| a.id) as p1, extract(b IN nodes(p2)| b.id) as p2
----RESULTS----
p1=1,4,3
p1=1,8,3
p1=1,8,9,3
p2=6,7,3
p2=6,5,9,3
p2=6,7,10,3
我想要的是在查询期间与密码中的路径相交,这样我之后就不必这样做了。在 php 中,我将使用以下方法进行迭代:
$result = array_intersect($p1,$p2);
这将从上面的示例返回 9,3,因为它们是所有路径共享的唯一公共节点。有没有办法在 Cypher 中做到这一点,这样我就不会返回数百行?
谢谢!
【问题讨论】:
标签: path neo4j cypher intersect