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

Neo4j查询关注关系时如何判断被关注用户是否回关

Neo4j 互关关系同步查询方案

场景1:查询指定两个用户的关注&回关状态

直接使用Cypher的EXISTS()函数做关系存在性判断,一次查询返回两个布尔结果:

// 替换为你的用户唯一标识属性,比如userId、openId等
MATCH (a:User {userId: '用户A的ID'}), (b:User {userId: '用户B的ID'})
RETURN
  EXISTS((a)-[:Follows]->(b)) AS isAFanOfB, // A是否是B的粉丝
  EXISTS((b)-[:Follows]->(a)) AS isBFollowBack // B是否回关A

返回结果里两个字段都是布尔值,直接对应你需要的两个状态。

场景2:批量查询某用户的所有粉丝+对应回关状态

如果需要拉取B的全量粉丝列表,同时给每个粉丝标记是否被B回关,写法如下:

MATCH (fan:User)-[:Follows]->(b:User {userId: '用户B的ID'})
RETURN
  fan.userId AS fanUserId,
  fan.nickname AS fanNickname,
  EXISTS((b)-[:Follows]->(fan)) AS isFollowBack

这种写法的性能损耗极低,Neo4j对关系存在性判断做了原生优化,哪怕是十万级粉丝量的查询也不会有明显延迟。

优化建议:给:User标签的唯一识别字段(比如userId)加上唯一索引,可以进一步缩短节点匹配的耗时。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:15:04