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

如何编写Cypher查询找出不含:X节点类型的A到D路径?

问题说明

我们有如下图结构:

(:A) -> (:B) -> (:C) -> (:D)
  \                ^
   \               |
     -> (:X) -> (:Y) 

从:A到:D存在两条路径:

  • 路径1:(:A) -> (:B) -> (:C) -> (:D)
  • 路径2:(:A) -> (:X) -> (:Y) -> (:C) -> (:D)

用下面的Cypher查询会返回这两条路径:

MATCH p1 = ((:A)-[*]-(:D))
RETURN p1

现在需要编写Cypher查询,只返回不包含:X节点类型的路径。

解决方案

可以通过添加WHERE子句过滤路径中的节点,实现需求:

MATCH p1 = (:A)-[*]-(:D)
WHERE NOT ANY(n IN nodes(p1) WHERE n:X)
RETURN p1
原理说明
  • nodes(p1)函数会提取路径p1包含的所有节点集合
  • ANY(n IN nodes(p1) WHERE n:X)用于判断路径中是否存在:X类型的节点
  • 加上NOT后,查询就只会保留完全不包含:X节点的路径,最终只会返回路径1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 04:54:24