如何用Cypher查询我关注的用户及企业发布的帖子?
解决方法:同时匹配关注的用户和企业发布的帖子
你只需要调整匹配的目标节点范围,让它同时覆盖User和Company两种类型即可。这里有两种实用的实现方式:
方式一:标签联合(最简洁的写法)
直接在匹配的目标节点上指定允许的标签集合,这样FOLLOWS关系的终点可以是用户或者企业,再关联它们发布的帖子:
MATCH (:User {id: '1'})-[:FOLLOWS]->(target:User|Company)<-[:POST]-(post) RETURN post ORDER BY post.time DESC LIMIT 10
这里的target:User|Company表示匹配既可以是User标签也可以是Company标签的节点,一次性覆盖你需要的两种场景。
方式二:用UNION合并查询(更灵活)
如果后续需要对“关注用户的帖子”和“关注企业的帖子”做不同的过滤或处理,可以用UNION把两个独立查询的结果合并:
MATCH (:User {id: '1'})-[:FOLLOWS]->(:User)<-[:POST]-(post) RETURN post UNION MATCH (:User {id: '1'})-[:FOLLOWS]->(:Company)<-[:POST]-(post) RETURN post ORDER BY post.time DESC LIMIT 10
这种方式适合复杂业务场景,能分别控制两类帖子的查询逻辑。
小提醒
要确保你的Company节点和post之间确实存在[:POST]反向关系(也就是post-[:POST]->Company),如果企业发布帖子的关系名不是POST(比如用了POSTED_BY),记得替换成实际的关系名称哦。
内容的提问来源于stack exchange,提问作者Araz Jafaripur
相关产品推荐
相关产品推荐

