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中打开了一个。