使用CYPHER我可以使用collect()函数获得有序的事物列表。是否可以将这样的列表转换为简单的字符串,使其表现为单个字符串对象?
如果不可能,可以以某种方式顺序连接两个(或更多)collect语句的内容,以便在单行中我可以产生诸如'A,B,C a,b,c'的输出其中A,B,C是第一个收集声明的订购产品,a,b,c是第二个?
答案 0 :(得分:3)
充实Dave的评论:首先,您想要合并您的馆藏,然后使用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
上的the docs,以便更好地了解Cypher中的工作原理。
答案 1 :(得分:0)
一个更通用的解决方案,也适用于对象集合(不仅仅是字符串集合),是使用APOC过程{{3}将串联集合转换为字符串化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
将返回此信息:
"[\"A\",\"B\",\"C\",\"a\",\"b\",\"c\",\"do\",\"re\",\"mi\"]"
此示例使用对象集合:
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\":1},{\"b\":2},{\"c\":3},{\"a\":10},{\"b\":20},{\"c\":30},{\"a\":100},{\"b\":200},{\"c\":300}]"