首页 > 解决方案 > Neo4j / Cypher - 查找路径,但该路径的中间节点不能是 X 类型

问题描述

我有这段代码可以找到最短路径:

p=shortestPath((startNode)-[*..10]-(endNode))

现在我想添加一个条件,即中间节点都不能是 X 类型。只有第一个节点具有 X 类型。

标签: neo4jcypher

解决方案


我认为是这样的:

MATCH p=shortestPath((startNode)-[*..10]-(endNode))
WHERE none(node IN nodes(p)[1..-1] WHERE node:X)

关键是从过滤器中省略第一个和最后一个节点,如下所示:

nodes(p)[1..-1]

推荐阅读