我有一个带有通常社交图的Neo4j数据库。我正在尝试创建一个活动源(用户X跟着你,用户Y喜欢你的消息等)。
有User
和Message
个节点。
Follows
,Likes
和Mentions
关系,每个关系都有created_on
属性。
(实际上还有一些我想要的关系,但为了简洁起见,我将它保持为3个例子)
我正在尝试返回活动事件列表,按日期分页和排序。每个活动都会有它发生的日期,与之相关的用户以及消息(如果适用)。
我对每个活动类型/关系都有效,但我很难将它们全部合并到一个密码/响应中。
Cyphers个人......
喜欢
MATCH (me:User {username:"matt"})-[:Owner]->(msg:Message)<-[likes:Likes]-(user:User) RETURN user, msg, likes.created_on ORDER BY likes.created_on LIMIT 25
提及
MATCH (me:User {username:"matt"})<-[mentions:Mentions]-(msg:Message)-[:Owner]-(user:User) RETURN user, msg, mentions.created_on ORDER BY mentions.created_on LIMIT 25
关注
MATCH (me:User {username:"Matt"})<-[follows:Follows]-(user:User) RETURN user, follows.created_on ORDER BY follows.created_on LIMIT 25
我最初将它们全部与optional
组合在一起,但每行返回的结果/关系类型多一个。因此,一个活动可以包含comment
和mention
。这会使限制请求陷入混乱,因为我们有2个活动占用了一个结果。
然后我尝试了WHERE
和OR
MATCH (me:User {username:"Matt"})-[r]-(m)--(u)
WHERE me-[:Owner]->(m:Message)<-[r:Likes]-(u:User)
OR me<-[r:Message]-(m:Message)-[:Owner]-(u:User)
OR me<-[r:Follows]-(u:User)
RETURN m, u, r.created_on
ORDER BY r.created_on
LIMIT 25
但我现在已经迷失了!这似乎根本没有返回任何结果
关于如何将上述Cyphers组合成一个请求的任何建议/指针?
答案 0 :(得分:3)
尝试这样的事情
ng-repeat
答案 1 :(得分:2)
您可以使用工会http://neo4j.com/docs/stable/query-union.html 通过这种方式,您可以获得所有结果