在neo4j中没有收到警告的情况下找到2个节点之间路径的正确方法是什么?

Jak*_*uth 3 neo4j cypher

我目前正在使用neo4j,需要在大图中找到2个节点之间的路径。我正在使用以下密码查询:

MATCH p=(acq:Acquisition {id:'1'})-[r*]->(ecs:ExternalCommunicationService {id:'1'})
RETURN p
Run Code Online (Sandbox Code Playgroud)

一切正常(查询返回节点之间任意长度的路径),但是下面显示警告消息:

警告:不推荐使用此功能,以后的版本中将删除该功能。不建议将绑定关系绑定到可变长度模式中的列表。

在官方文档中使用与相同的模式*

在不得到任何警告的情况下(不使用不赞成使用的语法)查找节点之间任何长度的路径的正确方法是什么?

Bru*_*res 5

3.2.0-rc1开始,不建议使用可变长度模式的列表绑定关系。

根据此拉取请求, Cypher查询如下:

MATCH (n)-[rs*]-() RETURN rs
Run Code Online (Sandbox Code Playgroud)

将生成警告,并且编写相同查询的规范方法是:

MATCH p=(n)-[*]-() RETURN relationships(p) AS rs
Run Code Online (Sandbox Code Playgroud)

由于您没有r在查询中使用变量,因此只需将其从查询中删除,警告就会消失。这条路:

MATCH p=(acq:Acquisition {id:'1'})-[*]->(ecs:ExternalCommunicationService {id:'1'})
RETURN p
Run Code Online (Sandbox Code Playgroud)