我正在创建一个学习Neo4J的社交网络。我们有用户及其关注者,帖子。我们想要合并两个陈述。
目标:按时间顺序排列您的帖子和您关注的帖子。
我们尝试 OR 和 RETURN p + l作为帖子和 Serverside语言合并(订单问题)
我如何创建此Cypher声明?
标签和关系
(用户) - [f:关注] - (用户)
(发布) - [p:POSTED_BY] - (用户)
修改
我们也试过这个Cypher
match (cur_user: User {username: 'ahmetsa'})-[:FOLLOW]->(others: User)<- [:POSTED_BY]-(p: Post)
match ( l: Post) - [:POSTED_BY]->(cur_user: User {username: 'ahmetsa'})
return p+l
但是会出现类型错误
类型不匹配:预期收集但是节点(第3行,第10列(偏移:177)) “return p + l”
解决方案
Match (cur_user: User {username: 'ahmetsa'})-[:FOLLOW]->(others: User)<- [:POSTED_BY]-(p: Post) With cur_user,p
Match ( l: Post) - [:POSTED_BY]->(cur_user)
Return collect(p) + collect(l) as posts
答案 0 :(得分:1)
您可以使用WITH
合并两个语句:
Match (cur_user: User {username: 'ahmetsa'})-[:FOLLOW]->(others: User)<- [:POSTED_BY]-(p: Post) With cur_user, p
Match ( l: Post) - [:POSTED_BY]->(cur_user)
Return collect(p) + collect(l) as posts
WITH
允许您将变量传递给下一个查询部分,以便您可以使用它而无需再次匹配。