我想使用foreach创建节点和关系。为每个m创建两个节点p,其中m [知道]:
start n=node(1)
foreach(i in range(1,2):
create (m{id:i})
foreach(j in range(1,2):
create (p{name:i,id:j}),
(m)-[:knows]->(p)
)
);
没有语法错误,但它创建的节点数超出了我的预期。以下是创建的所有节点:
==> | Node[27]{id:1} |
==> | Node[28]{name:1,id:1} |
==> | Node[29]{name:1,id:2} |
==> | Node[30]{name:1,id:1} |
==> | Node[31]{} |
==> | Node[32]{name:1,id:2} |
==> | Node[33]{} |
==> | Node[34]{id:2} |
==> | Node[35]{name:2,id:1} |
==> | Node[36]{name:2,id:2} |
==> | Node[37]{name:2,id:1} |
==> | Node[38]{} |
==> | Node[39]{name:2,id:2} |
==> | Node[40]{} |
这些命令如何创建节点(30-33)和节点(37-40)?他们之间的关系是:
(31)-[:knows]->(30)
(33)-[:knows]->(32)
(38)-[:knows]->(37)
(40)-[:knows]->(39)
请帮帮我。非常感谢。
答案 0 :(得分:1)
我不确定您的查询有什么问题,但这似乎在2.0.0中按预期工作。注意,我没有节点
CREATE (n:XX)
FOREACH (i in range(1,2) |
CREATE (m:XX {id:i}),
(m)-[:PARENT]->(n)
FOREACH (j in range(3,4)|
CREATE (p:XX {name:i, id:j}),
(m)-[:KNOWS]->(p)
)
)
RETURN n--()--()
我对此进行了一些修改以创建一个新节点作为根,并且语法自1x以来已更改,因此FOREACH
现在使用管道|
。只创建了没有空白节点的相应节点,就像您在示例中看到的那样。也许这是一个已被修复的错误?