neo4j带标签约束的最短路径

时间:2017-06-19 06:45:43

标签: neo4j shortest-path

希望了解是否可以执行任何操作以使查询在大图上具有高性能。我试图找到两个节点之间的最短路径,但排除包含某些其他类型节点的路径。问题似乎是WHERE子句。下面的查询完全停止了。

MATCH p=shortestPath((p1:Party{suprRC:"21"})-[*..15]-(p2:Party{suprRC:"21"}))
WITH p
WHERE NONE(n in nodes(p) where labels(n) in [["Reporter"],["FirstName"],["LastName"]]) 
RETURN p limit 500;

1 个答案:

答案 0 :(得分:0)

比较错误,labels(n)返回标签集合,您将匹配一个单独的String元素集合。

正如Tom所说,你可以不使用WITH,但你必须使用两个NONE谓词

MATCH p=shortestPath((p1:Party{suprRC:"21"})-[*..15]-(p2:Party{suprRC:"21"}))
WHERE NONE(x IN nodes(p) 
             WHERE NONE(l IN ['Reporter','LastName', 'FirstName'] 
                      WHERE l IN labels(x)
                      )
          )
RETURN p limit 500;