String 如何将列表(从Collect)转换为字符串

String 如何将列表(从Collect)转换为字符串,string,list,neo4j,cypher,String,List,Neo4j,Cypher,使用CYPHER,我可以使用collect()函数获得事物的有序列表。是否可以将这样一个列表转换为一个简单的字符串,使其作为单个字符串对象 如果这不可能,是否可以以某种方式将两个(或多个)collect语句的内容顺序连接起来,以便在一行中生成诸如“a,B,ca,B,C”之类的输出,其中a,B,C是第一个collect语句的有序积,a,B,C是第二个collect语句的有序积,您需要合并集合,然后使用REDUCE()将每个项附加到字符串中。像这样: WITH COLLECT(first_group

使用CYPHER,我可以使用collect()函数获得事物的有序列表。是否可以将这样一个列表转换为一个简单的字符串,使其作为单个字符串对象


如果这不可能,是否可以以某种方式将两个(或多个)collect语句的内容顺序连接起来,以便在一行中生成诸如“a,B,ca,B,C”之类的输出,其中a,B,C是第一个collect语句的有序积,a,B,C是第二个collect语句的有序积,您需要合并集合,然后使用
REDUCE()
将每个项附加到字符串中。像这样:

WITH COLLECT(first_group) AS a, COLLECT(second_group) AS b
WITH a + b AS c
WITH REDUCE(s = HEAD(c), n IN TAIL(c) | s + ', ' + n) AS result
RETURN result

查看
REDUCE
,更好地了解它在Cypher中的工作原理。

一个更通用的解决方案也适用于对象集合(不仅仅是字符串集合),即使用以下过程将串联的集合转换为字符串化JSON

此示例使用字符串集合:

WITH ['A','B','C'] AS x, ['a','b','c'] AS y, ['do','re','mi'] AS z
WITH x + y + z AS data
CALL apoc.convert.toJson(data) YIELD value
RETURN value
WITH [{a:1},{b:2},{c:3}] AS x, [{a:10},{b:20},{c:30}] AS y, [{a:100},{b:200},{c:300}] AS z
WITH x + y + z AS data
CALL apoc.convert.toJson(data) YIELD value
RETURN value
将返回此文件:

"[\"A\",\"B\",\"C\",\"a\",\"b\",\"c\",\"do\",\"re\",\"mi\"]"
"[{\"a\":1},{\"b\":2},{\"c\":3},{\"a\":10},{\"b\":20},{\"c\":30},{\"a\":100},{\"b\":200},{\"c\":300}]"
此示例使用对象集合:

WITH ['A','B','C'] AS x, ['a','b','c'] AS y, ['do','re','mi'] AS z
WITH x + y + z AS data
CALL apoc.convert.toJson(data) YIELD value
RETURN value
WITH [{a:1},{b:2},{c:3}] AS x, [{a:10},{b:20},{c:30}] AS y, [{a:100},{b:200},{c:300}] AS z
WITH x + y + z AS data
CALL apoc.convert.toJson(data) YIELD value
RETURN value
将返回此文件:

"[\"A\",\"B\",\"C\",\"a\",\"b\",\"c\",\"do\",\"re\",\"mi\"]"
"[{\"a\":1},{\"b\":2},{\"c\":3},{\"a\":10},{\"b\":20},{\"c\":30},{\"a\":100},{\"b\":200},{\"c\":300}]"

我认为您应该检查cypher中的reduce()函数。