首页 > 解决方案 > 在 neo4j 中获取关注者的帖子以及自己的帖子

问题描述

我将 neo4j 用于我的社交项目,用户可以在其中创建帖子,并且可以互相关注。我必须获取我的追随者的帖子以及我自己的帖子。要获取我的关注者的帖子,我使用以下查询:

MATCH (me:User {UserId: '39434e4d-d501-4fba-8aae-16cf652deb3e'})-[:FOLLOWSS|CREATED]->(f:User)-(p:Posts) RETURN p LIMIT 25 

上面的查询返回我的追随者的帖子,但我无法获得自己的帖子。有人能告诉我我缺少什么来获得我自己的帖子以及我的追随者的帖子吗

MATCH (me:User {UserId: '39434e4d-d501-4fba-8aae-16cf652deb3e'})-[:FOLLOWSS]->(f:User)-[fc:CREATED|LIKED]-(p:Posts)<-[:CREATED]-(n) RETURN p LIMIT 25

我尝试了上面的查询,但它没有返回任何记录。

任何帮助将不胜感激。

谢谢。

标签: neo4jcypher

解决方案


最简单的方法是使用可选的可变长度关系,这可以通过使用下限 0 来实现:

MATCH (me:User {UserId: '39434e4d-d501-4fba-8aae-16cf652deb3e'})-[:FOLLOWSS*0..1]->(f:User)-[:CREATED]-(p:Posts) 
RETURN p LIMIT 25 

是关键,因为这[:FOLLOWSS*0..1]意味着它将包括与另一个 :User 节点具有 :FOLLOWSS 关系的模式,以及没有遍历任何关系的模式(意味着您的me用户与 :User 节点是同一个f节点)。


推荐阅读