1

我有一个用户图表。在此图中,它们也是活动(节点)。每个用户都有其活动的链表:

(user)-[:NEXT_ACTIVITY*]->(activities)

但是有一个棘手的部分:一个活动可以由 2 个用户拥有。所以我在我的 NEXT_ACTIVITY 关系中设置了一个属性“idUser”,带有用户的 ID。这就是我可以找到 1 个用户的所有活动的方式。

START user=node:users('name:JohnDoe')
MATCH (user)-[rel:NEXT_ACTIVITY*]->(activities)
WHERE ALL (r in rel WHERE r.idUser = id(user))

我的问题是我不知道如何使用该系统为多个用户获取活动。如何旅行多个用户的链式列表,并确保所有NEXT_ACTIVITY图形旅行都属于这些用户?

用例:我想获取用户及其朋友的活动。

问候, 拉斐尔

ps:一个activity可以被2个用户拥有的原因是,如果AB的墙上发布,就是A和B的activity。

4

1 回答 1

1

您可以首先获取用户的所有朋友(例如 name='u1'),包括用户,因为关系的长度为 0..1,然后为每个人获取所有活动。

Match u:User-[:FRIEND*0..1]->friend:User
Where u.name = 'u1'
With friend 
Match friend-[rel:NEXT_ACTIVITY*]->activity
Where all(r in rel where r.idUser = id(friend))
Return friend.name, collect(activity.name)

如果您只需要所有活动而不考虑用户,则“返回不同的活动名称”

于 2013-09-26T16:27:19.910 回答