【问题标题】:Cannot append x with reverse(x): Type mismatch: expected Node, List<Node> or List<List<Node>> but was List<Any>不能用 reverse(x) 附加 x:类型不匹配:预期的 Node、List<Node> 或 List<List<Node>> 但是是 List<Any>
【发布时间】:2017-09-07 16:29:41
【问题描述】:

我尝试执行

RETURN nodes(path1) + reverse(nodes(path2))

导致此错误的原因:

Type mismatch: expected Node, List<Node> or List<List<Node>> but was List<Any>

这是一个最小的例子:

输入:

WITH range(1, 3) AS xs
RETURN xs + reverse(xs)

预期结果: [1, 2, 3, 3, 2, 1]

实际结果:

Type mismatch: expected Integer, List<Integer> or List<List<Integer>> but was List<Any> (line 2, column 13 (offset: 35))
"return xs + reverse(xs)"
             ^

相反,我必须使用此解决方法:

WITH range(1, 3) AS xs
RETURN xs + [i IN range(size(xs) - 1, 0, -1) | xs[i]]

我相信 reverse(xs) 应该与 xs 本身具有相同的元素类型,但它的类型被擦除为“Any”。这是预期的行为吗?

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    (您可能应该为这种意外的reverse() 行为创建一个新的neo4j issue。)

    作为原始问题的解决方法,您可以反转用于获取 path2 的匹配模式,以便 NODES(path2) 已经“反转”,这样就无需使用 reverse()功能齐全。

    例如,如果您目前有:

    MATCH path2=(:Person {id: 1})-[:LIKES]->(:Cat {id: 2})
    

    你可以这样做:

    MATCH path2=(:Cat {id: 2})<-[:LIKES]-(:Person {id: 1})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-07
      • 2021-09-09
      • 2020-03-02
      • 1970-01-01
      • 2019-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多