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
我正在使用 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