【问题标题】:mistake using cypher collection (while creating a chain of nodes)使用密码集合时出错(在创建节点链时)
【发布时间】:2014-12-17 09:14:06
【问题描述】:

我做了一个查询,通过将一个有序的 p 节点集合附加到 C 节点-s 来创建一个节点链(如果它们都具有相同的 id,在我们的例子中是“-670”)。创建p节点的有序集合没有问题,但是我在CREATE(c)<-[:RELATED_TO]-(Ps[0])完整查询行中有错误

MATCH (c:C{id: -670}), (p:P{id:-670})
WHERE not(p-[:RELATED_TO]->())
WITH p, c 
ORDER BY p.t_start
with collect(p) as Ps, c

//This create doesn't work
CREATE (c)<-[:RELATED_TO]-(Ps[0])

//This create works fine
FOREACH(i in RANGE(0, length(Ps)-2) |
FOREACH(pay1 in [Ps[i]] |
FOREACH(pay2 in [Ps[i+1]] |
CREATE UNIQUE (pay1)<-[:RELATED_TO]-(pay2))))

RETURN Ps, c

错误:“无效输入 '[':需要标识符字符、节点标签、属性映射、空格或 ')'(第 6 行)”

这是我第一次在密码中使用集合,我真的不知道它有什么问题。提前致谢

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    这个怎么样?

    MATCH (c:C{id: -670}), (p:P{id:-670})
    WHERE not(p-[:RELATED_TO]->())
    WITH collect(p) AS ps, c 
    ORDER BY p.t_start
    WITH p[0] AS p0, c
    CREATE (c)<-[:RELATED_TO]-(p0)
    

    你也许可以逃脱:

    WITH collect(p)[0] AS p0, c
    

    虽然我没试过

    【讨论】:

    • WHERE not(p-[:RELATED_TO]->()) WITH p, c ORDER BY p.t_start with collect(p) as ps, c WITH ps[0] as p0, ps, c 在我的情况下工作。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    • 2017-06-01
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 2019-06-11
    • 2021-09-08
    相关资源
    最近更新 更多