Neo4j Cypher,如何在不破坏原始结果的情况下对结果使用匹配
我会尽可能地讲清楚,我所写的也很可能不是我想做的事情的好方法,在这种情况下,我希望有一些正确方向的建议 我要做的是创建一个node:Hang并创建与定义数组中的每个node:User的关系,然后根据其中一个节点上的fb_id匹配一个创建的关系。设置该关系的属性并返回第一个节点:User i matched 下面的内容满足了我的所有要求,但它返回的是具有匹配关系的用户,而不是我最初匹配的用户 如何使其返回原始匹配的用户?(xxxx,zzzz)Neo4j Cypher,如何在不破坏原始结果的情况下对结果使用匹配,neo4j,cypher,Neo4j,Cypher,我会尽可能地讲清楚,我所写的也很可能不是我想做的事情的好方法,在这种情况下,我希望有一些正确方向的建议 我要做的是创建一个node:Hang并创建与定义数组中的每个node:User的关系,然后根据其中一个节点上的fb_id匹配一个创建的关系。设置该关系的属性并返回第一个节点:User i matched 下面的内容满足了我的所有要求,但它返回的是具有匹配关系的用户,而不是我最初匹配的用户 如何使其返回原始匹配的用户?(xxxx,zzzz) 我觉得你说得通。我举了个例子。以下是三个用户: CRE
我觉得你说得通。我举了个例子。以下是三个用户:
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和挂起之间的
[member]
关系上设置founder=1
和status=1
。Nice!我在考虑一个条件集,但不太确定如何使它像你做的那样整洁。这正是我想要的方法。多谢各位
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;