Cypher / Neo4j:将任何内容转换为字符串(由于REVERSE的应用)

时间:2018-10-18 08:33:36

标签: neo4j cypher

我想将列表简化为字符串,以遵循特定的输出格式,这需要在元素之间使用竖线('|')。我这样做如下:

WITH ["three", "two", "one"] AS a RETURN reduce(acc=head(a), s in tail(a) | acc + "|" + s)

我的问题是由于数组的顺序错误而引起的:您看到它“计数”递减,而我想让它递增(在我的生产环境中,数组是图查询的中间结果,当然)。

所以我想我会做

WITH ["three", "two", "one"] AS a RETURN reduce(acc=head(a), s in REVERSE(tail(a)) | acc + "|" + s)

不幸的是,reverse似乎返回了某种通用类型(any)的集合,该集合未被字符串串联运算符接受:

Type mismatch: expected Float, Integer, String or List<String> but was Any (line 1, column 98 (offset: 97))
"WITH ["three", "two", "one"] AS a RETURN reduce(acc=head(a), s in reverse(tail(a)) | acc + "|" + s)"    
                                                                                                  ^

因此,我想通过toString将's'转换为字符串。但是,此函数将仅接受整数,浮点或布尔值,而不接受any

我该怎么办?我也接受没有转换的解决方案。我只希望能够将反向的字符串集合简化为单个字符串。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以通过简单地反转连接顺序来避免使用REVERSE()函数(即,使用s + "|" + acc代替acc + "|" + s):

WITH ["three", "two", "one"] AS a
RETURN REDUCE(acc=HEAD(a), s in TAIL(a) | s + "|" + acc )