0

我想使用 foreach 创建节点和关系。为每个 m 创建两个节点 p,其中 m [Knows]:

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)

请帮帮我。太谢谢了。

4

1 回答 1

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现在使用 pipe |。仅创建适当的节点,没有您在示例中看到的空白节点。也许这是一个已经修复的错误?

于 2014-01-28T00:25:31.120 回答