2016-10-03 28 views
0

使用CYPHER我可以使用collect()函数获得有序的列表。是否有可能将这样一个列表转换为一个简单的字符串,以便它表现为单个字符串对象?如何将列表(从收集)转换为字符串

如果这是不可能的,有可能以某种方式按顺序连接两个(或多个)收集语句的内容,以便在单个行中,我可以生成诸如'A,B,C a,b,c '其中A,B,C是第一次收集声明的有序产品,第二次是a,b,c?

+3

我想你应该检查cypher中的reduce()函数。 –

回答

0

要充实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 

检查REDUCEthe docs得到一个更好的主意它是如何工作的Cypher支架。

0

一个更普遍的解决方案,还将为对象(不只是字符串的集合)的集合工作是使用APOC程序apoc.convert.toJson的级联集合转换成字符串化JSON

这个例子使用字符串集合:使用对象集合

"[\"A\",\"B\",\"C\",\"a\",\"b\",\"c\",\"do\",\"re\",\"mi\"]" 

这个例子:

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\":1},{\"b\":2},{\"c\":3},{\"a\":10},{\"b\":20},{\"c\":30},{\"a\":100},{\"b\":200},{\"c\":300}]"