我需要从用户关注的页面中获取帖子。帖子分为具有HAS_CONTENT关系的不同内容。因此用户可以关注多个页面。每个页面都可以有很多帖子。邮政有一系列内容。帖子也属于一个页面。最后的输出作为json返回。
用户 - >如下 - >页面
后> Belongsto->页面
页面 - > HasContent->内容
我编写了以下查询,但它确实有效。
Match (u:User {uuid:"0c517930-63b3-11e5-8a9d-eaf3f38b64dc"})-[f:FOLLOWS]->(p:Page)
with p , collect (p.uuid) as pageIds
Match(pst: Post)-[b:BELONGS_TO]-(pge:Page) where (pge.uuid in pageIds)
with pst , collect (pst.uuid) as postIds
Match (post: Post)-[h:HAS_CONTENT]-(c:Content) where (post.uuid in postIds)
with post, c order by c.orderNo asc
with {title: post.title, contents: collect(c)} as postList
return postList;
但我认为有更好的方法可以做到这一点。请帮忙。
答案 0 :(得分:1)
您有误解,您无法同时汇总和退回同一项目,或者与collect
汇总或退回该项目。
您的查询过于复杂,更容易:
Match (u:User {uuid:"0c517930-63b3-11e5-8a9d-eaf3f38b64dc"})
-[:FOLLOWS]->(p:Page)<-[:BELONGS_TO]-(pst:Post)
-[:HAS_CONTENT]->(c:Content)
with p, post, c
order by c.orderNo asc
with p, {title: post.title, contents: collect(c)} as postList
return {page:page.title, posts: collect(postList)} as pageList;