Neo4j:如何将多个密码组合成一个?

时间:2015-10-09 10:03:16

标签: neo4j cypher

我有一个带有通常社交图的Neo4j数据库。我正在尝试创建一个活动源(用户X跟着你,用户Y喜欢你的消息等)。

UserMessage个节点。

FollowsLikesMentions关系,每个关系都有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组合在一起,但每行返回的结果/关系类型多一个。因此,一个活动可以包含commentmention。这会使限制请求陷入混乱,因为我们有2个活动占用了一个结果。

然后我尝试了WHEREOR

 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组合成一个请求的任何建议/指针?

2 个答案:

答案 0 :(得分:3)

尝试这样的事情

ng-repeat

答案 1 :(得分:2)

您可以使用工会http://neo4j.com/docs/stable/query-union.html 通过这种方式,您可以获得所有结果