使用CYPHER我可以使用collect()函数获得有序的列表。是否有可能将这样一个列表转换为一个简单的字符串,以便它表现为单个字符串对象?如何将列表(从收集)转换为字符串
如果这是不可能的,有可能以某种方式按顺序连接两个(或多个)收集语句的内容,以便在单个行中,我可以生成诸如'A,B,C a,b,c '其中A,B,C是第一次收集声明的有序产品,第二次是a,b,c?
使用CYPHER我可以使用collect()函数获得有序的列表。是否有可能将这样一个列表转换为一个简单的字符串,以便它表现为单个字符串对象?如何将列表(从收集)转换为字符串
如果这是不可能的,有可能以某种方式按顺序连接两个(或多个)收集语句的内容,以便在单个行中,我可以生成诸如'A,B,C a,b,c '其中A,B,C是第一次收集声明的有序产品,第二次是a,b,c?
要充实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支架。
一个更普遍的解决方案,还将为对象(不只是字符串的集合)的集合工作是使用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}]"
我想你应该检查cypher中的reduce()函数。 –