Neo4j和Cypher语法:匹配组/节点集合中的所有路径

时间:2015-02-11 18:12:14

标签: collections neo4j cypher

我尝试匹配一组节点中的所有路径(最多一定长度)。我可以通过发出以下查询来成功完成此操作:

MATCH (n) WHERE ID(n) IN [1, 2, 3, 4, 5]
MATCH (m) WHERE ID(m) IN [1, 2, 3, 4, 5]
MATCH paths = allShortestPaths((n)-[*..3]-(m))
RETURN paths

我对结果本身及其速度感到满意。我不明白的是,是否有一种方法可以定义一个变量来定义集合[1,2,3,4,5]一次。排序:

x = [1, 2, 3, 4, 5]
MATCH (n) WHERE ID(n) IN x
MATCH (m) WHERE ID(m) IN x
MATCH paths = allShortestPaths((n)-[*..3]-(m))
RETURN paths

这可能吗?我尝试了几种替代方案(使用WITH和AS),但没有运气。

由于

1 个答案:

答案 0 :(得分:1)

使用:

WITH [1, 2, 3, 4, 5] AS x

如:

WITH [1, 2, 3, 4, 5] AS x
MATCH (n) WHERE ID(n) IN x
MATCH (m) WHERE ID(m) IN x
MATCH paths = allShortestPaths((n)-[*..3]-(m))
RETURN paths

顺便说一句,neo4j-community-2.2.0-M03似乎有一个回归,导致上述查询出错。 M02似乎没有问题。