使用MATCH和CREATE子句迭代集合

dre*_*ore 5 neo4j graph-databases cypher

我想在cypher中做这样的事情:

MATCH (n:node) WHERE n.ID = x        //x is an integer value
FOREACH (num in n.IDs: 
    MATCH (p:node) WHERE p.ID = num
    CREATE (n)-[:LINK]->(p) )
Run Code Online (Sandbox Code Playgroud)

其中num是一个整数值数组,指的是需要链接到第一行中匹配的节点的节点的ID.

当我运行此查询时,我收到错误:Invalid use of MATCH inside FOREACH.

我正在教自己Cypher和Neo4j的早期阶段.我怎样才能在这里实现我想要的功能?或者我正在咆哮错误的树 - 我是否未能抓住使我没有必要这样做的东西?

Pet*_*uer 9

这是不允许的,而是使用像http://gist.neo4j.org/?8332363这样的顶级MATCH

MATCH (n:node), (p:node)
WHERE n.ID = 1 AND p.ID in [2,3,4]
CREATE (n)-[:LINK]->(p)
Run Code Online (Sandbox Code Playgroud)

  • 这应该在FOREACH,imho的文档中.foreach-then-match是许多语言中常见的习语,所以如果说Cypher的方式与众不同就会很棒! (3认同)