首页 > 解决方案 > Neo4J 检查用户是否关注我

问题描述

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

A 是 B 的追随者。获取此信息是直截了当的。但是,如果 B [:Follows] -> A 与否,我也想同时获取信息。

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

标签: neo4jcypher

解决方案


您可以通过添加反向路径的可选匹配然后将此路径分配给变量来实现。然后使用 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

这将返回:“bob”、“bill”、“yes”或“bob”、“bill”、“no”


推荐阅读