我有一个用户图表。 在此图中,它们也是活动(节点)。每个用户都有一个链接的活动列表:
(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:2个用户拥有某个活动的原因是,如果 A 在 B 的墙上发布,则它是A和B的活动。 / p>
答案 0 :(得分:1)
你可以先得到用户的所有朋友(比如姓名=' 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)
如果您只需要所有活动而不管用户,那么"返回不同的activity.name"