Neo4j Cypher—在两个节点数组之间创建关系的最佳方法
我有两个节点数组Neo4j Cypher—在两个节点数组之间创建关系的最佳方法,neo4j,cypher,Neo4j,Cypher,我有两个节点数组 TYPE1 : [Node1, Node2, ...NodeN] TYPE2 : [OtherNode1, OtherNode2....OtherNodeN] 我正在尝试将每个TYPE1节点连接到其相应的TYPE2节点,如下所示 (Node1) -[:RELATED_TO] -> (OtherNode1) 这是一个简单的一对一的通信 我曾经 MATCH (x:TYPE1),(y:TYPE2) with x, y with COLLECT(x) as n1, COLLE
TYPE1 : [Node1, Node2, ...NodeN]
TYPE2 : [OtherNode1, OtherNode2....OtherNodeN]
我正在尝试将每个TYPE1节点连接到其相应的TYPE2节点,如下所示
(Node1) -[:RELATED_TO] -> (OtherNode1)
这是一个简单的一对一的通信
我曾经
MATCH (x:TYPE1),(y:TYPE2)
with x, y
with COLLECT(x) as n1, COLLECT(y) as n2
FOREACH(i in RANGE(0, 9) |
CREATE (n1[i])-[:RELATED_TO]->(n2[i])
)
这与
错误:无效输入“[”:应为标识符字符、节点标签、属性映射“)”或关系模式(第4行第21列)
我有两个问题
非常感谢!考虑以下示例数据:
FOREACH (i IN range(1,10) | CREATE (:TYPE1), (:TYPE2))
因为您对按任何属性对集合排序不感兴趣,所以您只需按匹配
中找到的任何顺序连接节点即可。以下查询将执行(我认为)您尝试执行的操作,尽管它不美观:
MATCH (x:TYPE1), (y:TYPE2)
WITH COLLECT(DISTINCT x) AS n1, COLLECT(DISTINCT y) AS n2
WHERE LENGTH(n1) = LENGTH(n2)
FOREACH (i IN RANGE(0, LENGTH(n1) - 1) |
FOREACH (node IN [n1[i]] |
FOREACH (othernode IN [n2[i]] |
MERGE (node)-[:RELATED_TO]-(othernode)
)
)
)
浏览器视图发布查询:
考虑以下示例数据:
FOREACH (i IN range(1,10) | CREATE (:TYPE1), (:TYPE2))
因为您对按任何属性对集合排序不感兴趣,所以您只需按匹配
中找到的任何顺序连接节点即可。以下查询将执行(我认为)您尝试执行的操作,尽管它不美观:
MATCH (x:TYPE1), (y:TYPE2)
WITH COLLECT(DISTINCT x) AS n1, COLLECT(DISTINCT y) AS n2
WHERE LENGTH(n1) = LENGTH(n2)
FOREACH (i IN RANGE(0, LENGTH(n1) - 1) |
FOREACH (node IN [n1[i]] |
FOREACH (othernode IN [n2[i]] |
MERGE (node)-[:RELATED_TO]-(othernode)
)
)
)
浏览器视图发布查询:
对应的节点是否具有可比较的共享属性?例如,是否存在Node1.id=OtherNode1.id的情况?从您的示例中,似乎您希望将一个
TYPE1
节点与一个TYPE2
节点连接,但您不关心哪个节点(因为匹配
将以任意顺序返回内容)如果你真的想,你可以写一个查询来做这件事,但是我想你已经有了一些方法来判断哪个TYPE1
节点属于哪个TYPE2
节点?克里斯,谢谢你指出这一点……我需要按顺序连接它们……因为它们是按排序顺序创建的。所以,为了澄清,顺序很重要。Nicole,t这里没有关于共享属性的更多信息。杰克,请接受并投票表决答案。相应的节点是否具有可比较的共享属性?例如,是否存在Node1.id=OtherNode1.id的位置?从您的示例中,似乎您想要将一个TYPE1
节点与一个TYPE2连接起来
节点,但您不关心哪个节点(因为匹配将以任意顺序返回内容)如果你真的想,你可以写一个查询来做这件事,但是我想你已经有了一些方法来判断哪个TYPE1
节点属于哪个TYPE2
节点?克里斯,谢谢你指出这一点……我需要按顺序连接它们……因为它们是按排序顺序创建的。所以,为了澄清,顺序很重要。Nicole,t这里没有关于共享属性的更多信息。杰克,请接受并投票回答。