我试图找到给定特定长度的所有最短路径。以下是我正在使用的查询:
match (n:Person{email:'sam@gmail.com'}),
(k:Person{email:'joseph@gmail.com'}),
paths=allShortestPaths((n)-[r:CONNECTED_TO*..2]->(k))
where length(paths)=2
with collect(paths) as path
unwind path as p
return nodes(p) as nodes,rels(p) as relations
问题是我在表单数据库中有自引用节点
(n:Person{email:'sam@gmail.com'})-[:CONNECTED_TO]->
(n:Person{email:'sam@gmail.com'})
我想在最短路径查询中排除这些路径。任何人都可以指导我朝着正确的方向前进。
答案 0 :(得分:1)
您可以在最短路径调用后在WHERE子句中添加谓词以排除这些谓词:
match (n:Person{email:'sam@gmail.com'}),
(k:Person{email:'joseph@gmail.com'}),
path=allShortestPaths((n)-[:CONNECTED_TO*..2]->(k))
where length(path) = 2 and none(rel in relationships(path) where startNode(rel) = endNode(rel))
return nodes(path) as nodes, relationships(path) as relations