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

在Neo4j电影样本数据集中,如何查询未与Gene Hackman合作却曾被其参演电影导演执导的演员

如何用Cypher查询特定演员关联导演的非合作演员

你已经能查询Gene Hackman参演电影的导演了,现在要找那些被这些导演执导过,但从没和Gene同框过的演员,我们可以一步步拆解需求来写Cypher:

核心思路拆解

  • 第一步:锁定Gene Hackman本人,以及他参演过的所有电影对应的导演
  • 第二步:找到这些导演执导过的所有电影(不管Gene有没有参演)
  • 第三步:提取这些电影里的所有演员,然后排除掉那些曾经和Gene在同一部电影里合作过的演员
  • 第四步:去重,避免同一个演员出现在多个结果里

最终Cypher语句

MATCH (gene:Person {name: "Gene Hackman"})-[:ACTED_IN]->()<-[:DIRECTED]-(director:Person)
MATCH (director)-[:DIRECTED]->(movie:Movie)<-[:ACTED_IN]-(actor:Person)
WHERE actor <> gene
AND NOT EXISTS((actor)-[:ACTED_IN]->()<-[:ACTED_IN]-(gene))
RETURN DISTINCT actor.name AS actor_name, actor.born AS actor_born
ORDER BY actor_name

语句细节解释

  1. 第一行MATCH:先定位Gene,再找到他参演电影的所有导演,这部分和你之前的查询逻辑一致
  2. 第二行MATCH:从这些导演出发,找到他们执导的所有电影,再提取这些电影的所有演员
  3. WHERE条件:
    • actor <> gene:排除Gene本人(避免把他自己误算进结果)
    • NOT EXISTS((actor)-[:ACTED_IN]->()<-[:ACTED_IN]-(gene)):核心过滤条件,确保这个演员从未和Gene在同一部电影里有过合作记录
  4. RETURN部分:用DISTINCT去重,返回演员的姓名和出生年份,最后按姓名排序让结果更规整

测试验证

在Neo4j的Movies数据集里运行这个语句,你会得到比如Clint Eastwood执导的其他非Gene参演电影里的演员,或者Mike Nichols执导作品里未和Gene合作过的演员,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 06:53:44