繁体   English   中英

Cypher-在两个节点阵列之间创建关系的最佳方法

[英]Cypher - Best way to create relationships between two arrays of nodes

我有两个节点数组

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列)

我有两个问题。

  1. 我在查询中做错了什么?

  2. 完成我正在做的事情的最佳方法是什么?

非常感谢!

考虑以下示例数据:

FOREACH (i IN range(1,10) | CREATE (:TYPE1), (:TYPE2))

因为您不希望按任何属性对集合进行排序,所以将按照MATCH查找节点的任何顺序来加入节点。 以下查询将完成(我认为)您正在尝试执行的操作,尽管它不太优雅:

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)
        )
    )
)

浏览器视图后查询:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM