0

我在 neo4j 中执行以下查询,它返回所有节点及其关系路径

询问

MATCH (p:MyNode {name : "Vivek"})-[r*1..2]->(f:MyNode) return p,[x in r | type(x)] as rel,f

结果

{vivek} ["knows"] {Rajesh}
{vivek} ["knows","friendof] {Ezhil}

虽然此查询执行正确并给了我预期的结果,但我在 neo4j 浏览器中收到以下警告

不推荐将关系绑定到可变长度模式的列表。(将可变长度关系模式绑定到变量 ('r') 已弃用,并且在未来版本中将不受支持。推荐的方法是将整个路径绑定到变量,然后提取关系: MATCH p = (.. .)-[...]-(...) WITH *, 关系(p) AS r)

只是为了升级我的查询,我尝试了各种方法,但没有任何帮助。寻求这方面的帮助。

这是我按照帮助中的建议尝试过的匹配组合

MATCH p1 = (p:MyNode {name : "Vivek"})-[r*1..2]-(f:MyNode) WITH *, relationships(p1) AS r return p1

结果

不支持具有相同名称的多个结果列(第 1 行,第 60 列(偏移量:59)) "MATCH p1 = (p:MyNode {name : "Vivek"})-[r*1..2]-(f :MyNode) WITH *, 关系(p1) AS r 返回 p1"

更新

在此处输入图像描述

4

1 回答 1

0
MATCH p1 = (p:MyNode {name : "Vivek"})-[r*1..2]-(f:MyNode) 
WITH *, relationships(p1) AS r return p1

当您在第二行执行 * 时,您将获取第一个列表中生成的所有列,它们是 p1,p,r,f 。这就是为什么您不能再次将关系(p1)别名为 r。要获得查询 1 中的结果。你可以这样做-

MATCH path=(p:MyNode {name : "Vivek"})-[r*1..2]->(f:MyNode) 
return p,[x in relationships(path) | type(x)] as rel,f
于 2020-03-28T16:38:43.377 回答