如何在Neo4j中一次返回用户和好友?

如何在Neo4j中一次返回用户和好友?,neo4j,cypher,Neo4j,Cypher,我有这样的疑问: MATCH (U:User)-[S:Shout]->(P:Post)<-[H:Has]-(FU:User)-[FS:Shout]->(FP:Post) WHERE FU.user_id=2 return U.username, P.post, FU.username, FP.post 但我想返回如下结果: U.username P.post FU.username FP.post rio lala murey nana

我有这样的疑问:

MATCH (U:User)-[S:Shout]->(P:Post)<-[H:Has]-(FU:User)-[FS:Shout]->(FP:Post)
WHERE FU.user_id=2
return U.username, P.post, FU.username, FP.post
但我想返回如下结果:

U.username  P.post  FU.username FP.post
rio         lala    murey       nana
rio         lala    murey       hi
rio         hanson  murey       nana
rio         hanson  murey       hi
U.username  P.post
murey       hi
rio         hanson
murey       nana
rio         lala
上面我想要的结果是按
post\u id desc

有没有一种方法可以像上面那样返回结果

请帮忙。 谢谢。

您可以使用:

MATCH(FU:User{User_id:2})-[FS:Shout]>(FP:Post)
返回FU.username作为名称,FP.post作为post
联合
匹配

(U:User)-[S:Shout]->(P:Post)我认为这个查询正在创建一个笛卡尔积!试着用WITH语句来分解它,看看它是否有效..不,我已经想过了,但我认为
UNION
是无效的,它已经在[Hunger Blog]中解释过了。问题是它返回的太多(无关)数据。正如您所看到的,第二条语句看起来不错,而第一条语句是对数据库进行完整的图形扫描,查找所有
关系。这不是我们想要的。我已经尝试使用
集合
,但问题在于顺序。
MATCH (FU:User {user_id: 2})-[FS:Shout]->(FP:Post)
RETURN FU.username as name, FP.post as post
UNION
MATCH 
(U:User)-[S:Shout]->(P:Post)<-[H:Has]-(FU:User {user_id: 2})
return U.username as name, P.post as post