当我尝试获取与主节点相关的所有节点时neo4j中的奇怪行为

时间:2015-01-15 15:29:31

标签: neo4j

我正在尝试编写一个查询,它将为我提供与" 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行)。 所以,问题是:到底发生了什么?

enter image description here

enter image description here

EDITED

将查询更改为:

      MATCH (n {gid:'58749'})-[:contains*]-(z) RETURN distinct(z) as names

解决了部分问题。 将聚合具有相同名称(id)的节点。

1 个答案:

答案 0 :(得分:3)

请记住,图表中返回的内容是总结果集的表示;这包括构成结果集的所有子图/子路径。在表格表示中,您将获得包含结果集的所有子路径等。

E.g。 A-> B-> C-> D在图中,但在表中,您将看到,A-> B,A-> B-> C,A->。 B-> C-> D等。这是因为你所拥有的Cypher语句正在寻找具有任何深度“包含”关系的所有节点(同样,查询在任一方向上查找这样的关系)

因此,虽然您可能总共只有8个节点和9个关系,但您匹配的Cypher模式将是这8个节点和9个关系的组合。