You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Neo4j/Cypher最短路径查询:如何过滤路径中间的X类型节点

Cypher 最短路径节点类型过滤实现方案

你可以结合Cypher的路径节点提取函数和全量匹配谓词实现需求,完整写法如下:

// 先匹配符合X类型的起始节点,endNode可按自身业务需求补充过滤条件
MATCH (startNode:X), (endNode)
MATCH p=shortestPath((startNode)-[*..10]-(endNode))
// tail(nodes(p))会跳过第一个节点(起始节点),校验剩余所有节点都不是X类型
WHERE all(node IN tail(nodes(p)) WHERE NOT node:X)
RETURN p

说明

  • 以上写法默认要求路径中除了起始节点外,中间节点和结束节点都不能是X类型
  • 如果你需要允许结束节点为X类型,仅过滤路径上的纯中间节点,可将WHERE条件替换为:
    WHERE all(node IN nodes(p)[1..-1] WHERE NOT node:X)
    
    其中nodes(p)[1..-1]表示取路径节点中从第2个到倒数第2个的所有节点,也就是排除了起始和结束节点的纯中间节点集合。

内容的提问来源于stack exchange,提问作者ablaszkiewicz1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 15:48:04