【问题标题】:Iterating through a collection with MATCH and CREATE clauses使用 MATCH 和 CREATE 子句遍历集合
【发布时间】:2014-01-09 10:10:55
【问题描述】:

我想在 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) )

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

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

我正处于自学 Cypher 和 Neo4j 的早期阶段。我怎样才能在这里实现我想要的功能?还是我找错了树——我是否没有抓住一些让我没有必要这样做的东西?

【问题讨论】:

    标签: neo4j cypher graph-databases


    【解决方案1】:

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

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

    【讨论】:

    • 如果有一个数字 M(表示一些计数)那么我们如何在 [2 to M] 中实现 p.ID
    • 这应该在 FOREACH 的文档中,恕我直言。 foreach-then-match 是许多语言中的常见习语,因此如果有人指出 Cypher 方式不同,那就太好了!
    • 答案中的链接产生“找不到资源”
    猜你喜欢
    • 1970-01-01
    • 2015-04-04
    • 2014-04-11
    • 2020-11-20
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多