我正在尝试编写一个查询,它将为我提供与" master"连接的所有节点。节点。让我们说节点连接如下:
A -> B
B -> C
C -> D
C -> E
B -> F
我最初想要的是编写一个查询,它将返回主节点A下所有节点的名称。所有节点都与一个"包含"关系。
我写了这个查询:
MATCH (n {gid:'58749'})-[:contains*]-(z) RETURN z as names
当我在neo4jServer中运行此查询时,我得到了一个很好的图形,它显示了所有相关的节点。 但是,当我检查"表" vizualized日期(而不是图表)我得到更多的结果。 正如您在按钮上的第一个图片中所看到的那样:它显示了8个节点9个关系,但在第二个节点中(同样的想法)它表示:"返回48行)。 所以,问题是:到底发生了什么?
EDITED
将查询更改为:
MATCH (n {gid:'58749'})-[:contains*]-(z) RETURN distinct(z) as names
解决了部分问题。 将聚合具有相同名称(id)的节点。
答案 0 :(得分:3)
请记住,图表中返回的内容是总结果集的表示;这包括构成结果集的所有子图/子路径。在表格表示中,您将获得包含结果集的所有子路径等。
E.g。 A-> B-> C-> D在图中,但在表中,您将看到,A-> B,A-> B-> C,A->。 B-> C-> D等。这是因为你所拥有的Cypher语句正在寻找具有任何深度“包含”关系的所有节点(同样,查询在任一方向上查找这样的关系)
因此,虽然您可能总共只有8个节点和9个关系,但您匹配的Cypher模式将是这8个节点和9个关系的组合。