在循环中匹配和合并节点

时间:2016-01-06 16:14:05

标签: neo4j cypher

我想在2个节点之间创建一个关系,其中两个代码都在循环中。但是它创建了多个关系。

例如:

OPTIONAL MATCH (n:User), (p:Page)
WHERE n.id in["1","2","3"] AND p.id in ["10","12","13"]
MERGE (n)-[:likes]->(p)

上面的结果连接1到10,12,13和2到10,12,13和3到10,12,13。但实际上我只想要3个关系。我想1连接到10,2连接到12和3连接到13.如何实现这一目标?

2 个答案:

答案 0 :(得分:3)

试试这个:

UNWIND [[1,10],[2,12],[3,13]] as pair
MATCH (n:User), (p:Page)
WHERE n.id = pair[0] AND p.id = pair[1]
MERGE (n)-[:likes]->(p)

答案 1 :(得分:0)

OPTIONAL MATCH (n:User), (p:Page)
WHERE (n.id=="1" AND p.id="10") OR (n.id=="2" AND p.id="12") OR (n.id=="3" AND p.id="13")
MERGE (n)-[:likes]->(p)

您的条件适用于所有组合。相反,你应该只明确地允许所需的那些。

对于少量组合,这种方法很好。更多来自迈克尔的答案更好。

相关问题