如何在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