无法使用reverse(x)附加x:类型不匹配:预期节点,列表<节点>或列表<列表<节点>&gt;但是是List <any>

时间:2017-09-07 16:29:41

标签: neo4j cypher

我试图执行

httpd24

导致了这个错误:

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

这是一个最小的例子:

输入:

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

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

实际结果:

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

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

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

我认为reverse(xs)应该与xs本身具有相同的元素类型,而是将其类型擦除为&#34; Any&#34;。这是预期的行为吗?

1 个答案:

答案 0 :(得分:0)

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

作为原始问题的解决方法,您可以撤消用于获取path2的匹配模式,以便NODES(path2)已经“反转”#34;这将消除需要使用reverse()功能。

例如,如果您目前有:

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

你可以这样做:

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