我有三种类型的节点-挑战、输入和用户,以及这些节点之间的两个关系:(条目)-PART_BY->(用户)和(条目)-部分->(挑战)。
下面是我要完成的任务:-我有一个现有的挑战,我可以通过它的ID (内部neo4j id)来识别它--我也有一个现有的用户,我可以通过它的id (与neo4j内部id不同)来识别它--给定现有的挑战和用户,我需要创建一个新的入口节点,并将它与具有PART_OF关系的挑战节点链接起来。
这就是我想要的:
MATCH (c:Challenge)
WHERE (id(c) = 240),
MATCH (u:User {id: '70cf6846-b38a-413c-bab8-7c707d4f46a8'})
CREATE (e:Entry {name: "My Entry"})-[:PART_OF]->(c), (u)<-[r:POSTED_BY]-(e)
RETURN e;
但是,这是失败的,因为我似乎不能用上面的语法匹配两个节点。但是,如果我将“挑战”与非内部属性相匹配,例如“名称”,它似乎是有效的:
MATCH (c:Challenge {name: "Challenge Name"),
MATCH (u:User {id: '70cf6846-b38a-413c-bab8-7c707d4f46a8'})
CREATE (e:Entry {name: "My Entry"})-[:PART_OF]->(c), (u)<-[r:POSTED_BY]-(e)
RETURN e;
但是,正如我前面提到的,我想匹配挑战的neo4j内部节点ID,除了使用WHERE id(c) = 232
子句之外,我不确定是否有其他方法来匹配它。
发布于 2017-04-29 05:19:14
您的语法几乎是正确的,但是您不需要在WHERE和下一个匹配之间使用逗号。
MATCH (c:Challenge)
WHERE id(c) = 240
MATCH (u:User {id: '70cf6846-b38a-413c-bab8-7c707d4f46a8'})
CREATE (e:Entry {name: "My Entry"})-[:PART_OF]->(c), (u)<-[r:POSTED_BY]-(e)
RETURN e;
https://stackoverflow.com/questions/43692038
复制相似问题