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

Cypher实现多匹配场景下被关注对象频次统计

需求背景
  • 现有图数据库结构:携带name属性的Person节点之间通过有向follows关系建立关注连接,关系方向为关注者指向被关注者,示例关系:(n:Person {name: "a1"})-[:follows]->(m:Person {name: "a2"})
  • 待实现逻辑:给定一组Person节点的姓名列表,统计列表内所有节点关注的对象中,每个被关注对象的累计被关注次数
  • 示例验证场景:给定姓名列表["a1", "a2", "a3"],已知关注关系为a1关注b1、b2、b3;a2关注b2、b3;a3关注b3,期望输出统计结果为b3:3、b2:2、b1:1
实现Cypher语句

推荐使用参数化写法,避免注入风险,同时方便动态传入列表:

MATCH (follower:Person)-[:follows]->(followed:Person)
WHERE follower.name IN $nameList
RETURN followed.name AS followed_person, count(followed) AS follow_count
ORDER BY follow_count DESC

如果是固定列表的场景(即对应上述示例场景),可以直接写死列表值:

MATCH (follower:Person)-[:follows]->(followed:Person)
WHERE follower.name IN ['a1', 'a2', 'a3']
RETURN followed.name AS followed_person, count(followed) AS follow_count
ORDER BY follow_count DESC
语句逻辑说明
  • 第一步通过MATCH匹配所有Person节点间的follows有向关系,明确区分关注者(关系起点)和被关注者(关系终点)
  • 第二步通过WHERE条件过滤,仅保留关注者姓名属于给定输入列表的关系路径
  • 第三步按被关注者姓名分组,通过count()函数统计每个被关注者关联的有效路径数,也就是被列表内用户关注的总次数
  • 最后通过ORDER BY按被关注次数倒序排列,输出顺序和示例预期完全一致,执行示例场景的固定语句即可得到b3:3、b2:2、b1:1的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:57:11