我目前正在使用neo4j,需要在大图中找到2个节点之间的路径。我正在使用以下密码查询:
MATCH p=(acq:Acquisition {id:'1'})-[r*]->(ecs:ExternalCommunicationService {id:'1'})
RETURN p
Run Code Online (Sandbox Code Playgroud)
一切正常(查询返回节点之间任意长度的路径),但是下面显示警告消息:
警告:不推荐使用此功能,以后的版本中将删除该功能。不建议将绑定关系绑定到可变长度模式中的列表。
在官方文档中使用与相同的模式*。
在不得到任何警告的情况下(不使用不赞成使用的语法)查找节点之间任何长度的路径的正确方法是什么?
从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)