Neo4j路径在cypher shell中以错误的交替关系方向返回

Neo4j路径在cypher shell中以错误的交替关系方向返回,neo4j,cypher,Neo4j,Cypher,无法理解返回路径中的关系方向 我有一张这样的图 (:START)-[:NEXT]->(:NODE)-[:NEXT]->(:NODE)... 现在,我正在按照:NEXT的方向匹配从开始节点开始的所有路径,比如长度为10的路径。查询看起来像 MATCH t=((:START)-[:NEXT*..10]->(:NODE)) RETURN t; 我得到的输出路径似乎混淆了:下一个方向,如 (:START)-[:NEXT]->(:NODE)<-[:NEXT]-(:NODE

无法理解返回路径中的关系方向

我有一张这样的图

(:START)-[:NEXT]->(:NODE)-[:NEXT]->(:NODE)...
现在,我正在按照
:NEXT
的方向匹配从开始节点开始的所有路径,比如长度为10的路径。查询看起来像

MATCH t=((:START)-[:NEXT*..10]->(:NODE))
RETURN t;
我得到的输出路径似乎混淆了
:下一个
方向,如

(:START)-[:NEXT]->(:NODE)<-[:NEXT]-(:NODE)-[:NEXT]->(:NODE)<-...

(:START)-[:NEXT]->(:NODE)(:NODE)来自原始问题的编辑:

编辑:图形只是一条直线(有一个方向)。不 循环,没有分支。请在shell中复制该场景 以下是:

CREATE (s:START);
MATCH (s:START) MERGE (s)-[:NEXT]->(a:NODE)-[:NEXT]->(b:NODE)-[:NEXT]->(c:NODE)-[:NEXT]->(d:NODE);
MATCH t=((:START)-[:NEXT*..10]->()) return t;

+------------------------------------------------------------------------------+
| t                                                                            |
+------------------------------------------------------------------------------+
| (:START)-[:NEXT]->(:NODE)                                                    |
| (:START)-[:NEXT]->(:NODE)<-[:NEXT]-(:NODE)                                   |
| (:START)-[:NEXT]->(:NODE)<-[:NEXT]-(:NODE)-[:NEXT]->(:NODE)                  |
| (:START)-[:NEXT]->(:NODE)<-[:NEXT]-(:NODE)-[:NEXT]->(:NODE)<-[:NEXT]-(:NODE) |
+------------------------------------------------------------------------------+
执行
cypher shell中的语句时,问题确实发生了。在我看来,这是一只虫子。我在cypher shell的Github中搜索了这个问题,但什么也没找到。于是我开了一家银行

编辑2:

我在Github上打开的文件在此引用。此修复程序可能会在下一版本中发布

编辑3

问题已关闭并在中修复


原始答案如下:

我在这里模拟了你的情景。看:

示例数据集:

CREATE (node1:Node {id:1})
CREATE (node2:Node {id:2})
CREATE (node3:Node {id:3})
CREATE (node4:Node {id:4})
CREATE (node1)-[:NEXT]->(node2)
CREATE (node2)-[:NEXT]->(node3)
CREATE (node3)-[:NEXT]->(node4)
CREATE (node4)-[:NEXT]->(node2)
查询:

MATCH t=((:Node {id:1})-[:NEXT*..10]->(:Node {id:4}))
RETURN t;
结果是:

如您所见(如问题中所述)
(:Node{id:4})-[:NEXT]>(:Node{id:2})
返回。但是,这是因为Neo4j浏览器中启用了“连接结果节点”选项。您可以在Neo4j浏览器设置中禁用它。看:

禁用“连接结果节点”并再次运行查询后:


注意,“连接结果节点”选项仅适用于结果的图形可视化。也就是说:
(:Node{id:4})
(:Node{id:2})
之间的关系实际上不存在于结果中,如果将可视化更改为“表”、“文本”或“代码”,则不存在这种关系

谢谢你详尽的回答!不幸的是,我必须进一步澄清。我的图中没有有向循环。请看我在上面原始问题中的编辑请看一看并执行查询。我只将您的查询更改为
:ST
:START
:N
:NEXT
。我相信这些都是打字错误。对我来说,结果看起来不错,不是吗?请查看上面的问题,并更正错误。我再次一步一步地执行您的查询,结果看起来不错。看一看,很酷。但它仍然不能回答为什么箭头方向在cypher shell中显示为交替的问题。问题确实发生在cypher shell中。我更新了我的答案,并在cypher shell的Github中打开了一个。