Neo4J 检查用户是否关注我

Neo4J checking if a user follows me back

我正在使用 neo4j 构建一个 follower 模型。用户A [:Follows] -> 用户B和用户B也可以这样做。

A 是 B 的追随者。获取此信息非常简单。但是,如果 B [:Follows] -> A 与否,我也想同时获取信息。

有没有办法提取这些信息?

您可以通过添加反向路径的可选匹配,然后将此路径分配给变量来实现。然后使用 CASE 语句测试 RETURN 中变量的长度以获得结果

例如

MATCH (ua:User {name:"bob"})-[:Follows]->(ub:User {name:"Bill"})
OPTIONAL MATCH p = (ub)-[r:Follows]->(ua)
RETURN ua.name, ub.name, CASE WHEN LENGTH(p) > 0 THEN 'yes' ELSE 'no' END AS follows_back

这将 return 要么: “鲍勃”,“比尔”,“是的” 要么 “鲍勃”、“比尔”、“不”

此查询将为您提供 A 的关注者以及他们每个人的 true|false,表明他是否关注

MATCH (ua:User {name:"bob"})-[:Follows]->(ub:User)
RETURN ub.name AS ubName,
       EXISTS((ub)-[:Follows]->(ua)) AS followsBack