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

Cypher查询:如何返回仅出演过指定单部电影的演员节点

问题分析

你当前的查询只过滤了「出演过ID=11的电影」的演员,缺少了「该演员没有出演过其他任何电影」的过滤条件,所以会返回所有符合出演条件的演员,包括出演过多部电影的斯嘉丽·约翰逊。

修正后的Cypher查询
MATCH (targetMovie:Movie)
WHERE ID(targetMovie) = 11
MATCH (actor:Actor)-[:ACTED_IN]-(targetMovie)
// 过滤仅出演过1部电影的演员
WHERE SIZE((actor)-[:ACTED_IN]-(:Movie)) = 1
RETURN actor
逻辑说明
  • 第一步先定位ID为11的目标电影节点,避免重复匹配开销
  • 第二步匹配所有和该电影存在ACTED_IN关系的演员节点
  • 第三步的过滤条件为核心逻辑:统计每个演员所有ACTED_IN关系关联的电影总数,只有总数为1的演员才符合「仅出演过指定电影」的要求,自动过滤掉出演过多部电影的演员
  • 该逻辑仅统计ACTED_IN类型的关系,演员的其他关系(如你提到的IS_FRIEND_WITH)不会对统计结果产生影响

如果你图数据库中的ACTED_IN有明确方向(通常是Actor->ACTED_IN->Movie),可以把关系箭头明确标注为->,查询性能会更好,对应把过滤条件修改为WHERE SIZE((actor)-[:ACTED_IN]->(:Movie)) = 1即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:54:04