我有一个描绘节点及其关系的图,实体 - 参考 - 实体。
我想获得一个包含源实体和连接实体的列表,其中这两个实体没有直接连接但是以某种方式连接。
例如: a - 引用-b,c - 引用 - a,d - 引用 - c。在这种情况下,我也希望Cypher Qry返回d - references - a。
我想要的输出是:
a-b
C-A
d-c
c-b
d-a
d-B
答案 0 :(得分:0)
Cypher主要关注图中的模式匹配。因此,您感兴趣的模式不仅涵盖a-b
,还涵盖a-c-d
。您可以使用可变长度匹配来执行此操作,例如:
MATCH (n)-[*]-(m)
RETURN n.name, m.name
这假设节点上有name属性,可以返回。如果您正在使用浏览器进行可视化,请更改任何其他相关媒体资源,或RETURN n, m
。
请注意,无论方向如何,这都会匹配关系,这意味着您将在结果(以及其他所有组合)中同时获得a-d
和d-a
。如果您只想与一个方向匹配,请使用:
MATCH (n)-[*]->(m)
RETURN n.name, m.name
小心这些方法 - 即使在小图表中,它们也很容易最终匹配大量组合并导致Neo4j或您的应用程序死亡(由于内存耗尽等)