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

如何使用shortestPath()返回连接Bruce Willis与Oliver Stone的电影节点?

解决shortestPath提取中间Movie节点的问题

你的思路方向是对的,但原语句里有个容易踩的小坑——nodes(p)返回的是整条最短路径里的所有节点组成的列表,直接用WHERE type(n) = 'Movie'没办法遍历这个列表里的每个节点做筛选。咱们调整一下语句就能顺利拿到最短路径里的电影节点了:

MATCH p = shortestPath((d:Director{director_name:'Oliver Stone'})-[*]-(a:Actor{actor_name:'Bruce Willis'}))
UNWIND nodes(p) AS n
WHERE labels(n) CONTAINS 'Movie'
RETURN n

给你拆解下关键调整点:

  • 用UNWIND nodes(p) AS n把节点列表“拆”成单个节点,这样就能逐个检查每个节点的标签了
  • 这里用labels(n) CONTAINS 'Movie'比type(n)更贴合Neo4j的使用习惯,因为type()其实是用来检查关系类型的,节点的类型标识一般用标签(比如:Movie),用标签判断会更准确。如果你的数据结构确实用type来标记节点类型,那换成WHERE type(n) = 'Movie'也没问题。

如果想同时保留完整路径和提取出的电影节点集合,可以这么写:

MATCH p = shortestPath((d:Director{director_name:'Oliver Stone'})-[*]-(a:Actor{actor_name:'Bruce Willis'}))
WITH p, nodes(p) AS allNodes
UNWIND allNodes AS n
WHERE labels(n) CONTAINS 'Movie'
RETURN p, collect(n) AS moviesInShortestPath

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:07:19