如果在Cypher Neo4j中以某种方式连接两个节点,我怎么知道

时间:2014-08-18 04:30:48

标签: neo4j cypher

我有一个描绘节点及其关系的图,实体 - 参考 - 实体。

我想获得一个包含源实体和连接实体的列表,其中这两个实体没有直接连接但是以某种方式连接。

例如: a - 引用-b,c - 引用 - a,d - 引用 - c。在这种情况下,我也希望Cypher Qry返回d - references - a。

我想要的输出是:

a-b

C-A

d-c

c-b

d-a

d-B

1 个答案:

答案 0 :(得分:0)

Cypher主要关注图中的模式匹配。因此,您感兴趣的模式不仅涵盖a-b,还涵盖a-c-d。您可以使用可变长度匹配来执行此操作,例如:

MATCH (n)-[*]-(m)
RETURN n.name, m.name

这假设节点上有name属性,可以返回。如果您正在使用浏览器进行可视化,请更改任何其他相关媒体资源,或RETURN n, m

请注意,无论方向如何,这都会匹配关系,这意味着您将在结果(以及其他所有组合)中同时获得a-dd-a。如果您只想与一个方向匹配,请使用:

MATCH (n)-[*]->(m)
RETURN n.name, m.name

小心这些方法 - 即使在小图表中,它们也很容易最终匹配大量组合并导致Neo4j或您的应用程序死亡(由于内存耗尽等)