我会尝试尽可能多地提高意识,我写的东西也很可能不是我想要做的好方法,在这种情况下,我和#39; d欣赏正确方向的一些指示。
我想要做的是创建一个节点:挂起并创建与每个节点的关系:在定义的数组中的用户,之后,基于其一个节点上的fb_id匹配创建的关系之一。在该关系上设置一个属性并返回第一个节点:用户i匹配。
我在下面所做的就是我想要的所有内容,除了它返回具有匹配关系的用户而不是我最初匹配的用户。
如何制作它以便返回原始匹配的用户? (xxxx,zzzz)
CREATE (hang:Hang {})
WITH hang
MATCH (users:User) WHERE users.fb_id IN [xxxx, zzzz]
CREATE (users)-[:member {status: 0}]->(hang)
WITH users, hang
MATCH (users)-[r:member]->(hang) WHERE users.fb_id = xxxx
SET r.founder = 1, r.status = 1
RETURN users
答案 0 :(得分:3)
我认为你有道理。我举了一个例子。以下是三位用户:
CREATE (:User {fb_id:1234}),
(:User {fb_id:5678}),
(:User {fb_id:9101});
然后,如果您要创建从用户1234和5678到挂起的[member]
关系,但只为用户1234设置founder=1
和status=1
,同时仍然返回两个用户:
CREATE (hang:Hang {name:'Some Hang'})
WITH hang
MATCH (users:User) WHERE users.fb_id IN [1234, 5678]
CREATE (users)-[r:member]->(hang)
SET r.founder = CASE WHEN users.fb_id = 1234 THEN 1 ELSE 0 END,
r.status = CASE WHEN users.fb_id = 1234 THEN 1 ELSE 0 END
RETURN users;
最终返回用户1234和5678,但仅在用户1234和Hang之间的founder=1
关系上设置status=1
和[member]
。