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

Neo4j Cypher查询:查找与指定节点共享至少n个关联节点的实现方法

错误原因排查

  • 聚合函数(count()/sum()等)属于分组统计操作,不能直接在MATCH后的WHERE子句中使用,WHERE仅用于过滤单条匹配记录,分组后的过滤需要在统计完成后执行。
  • 第二次尝试的WITH子句携带了m节点,相当于按「Tom Hanks、合作演员、单部电影」三个维度分组,每个分组仅对应1部电影,count(m)结果恒为1,因此无符合条件的结果。
  • 第三次查询可以正常统计的核心是分组维度正确:仅按p2(合作演员)分组统计共同电影数,只需调整返回字段和后续关联逻辑,就能拿到完整节点。

正确Cypher查询

写法1:一次匹配完成,支持两种返回格式

MATCH (p1:Person {name: "Tom Hanks"})-->(m:Movie)<--(p2:Person)
// 按合作演员分组,收集所有共同电影
WITH p2, collect(m) AS co_movies
// 过滤合作次数≥3的演员
WHERE size(co_movies) >= 3
// --- 以下二选一,根据你需要的返回格式调整 ---
// 格式1:每行返回1个符合条件的演员 + 所有合作电影的数组
// RETURN p2, co_movies
// 格式2:每行返回1个符合条件的演员 + 1部合作电影(和你最初预期的返回结构一致)
UNWIND co_movies AS m
RETURN p2, m

写法2:先过滤符合条件的演员再关联电影(适合数据量更大的场景)

// 第一步:筛选出合作≥3次的演员
MATCH (p1:Person {name: "Tom Hanks"})-->(m:Movie)<--(p2:Person)
WITH p2, count(m) AS common_count
WHERE common_count >= 3
// 第二步:关联查询这些演员和Tom Hanks的所有合作电影
MATCH (p1:Person {name: "Tom Hanks"})-->(m:Movie)<--(p2)
RETURN p2, m

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:24:00