从路径创建字符串

时间:2017-03-01 02:36:36

标签: cypher

我有一系列节点,例如

{Name: 'X'}->{Name: 'Y'}->{Name: 'Z'}

我想在cypher中创建一个表示路径的字符串(我知道我可以在客户端执行它,但我想在查询中执行它),如下所示:

'X->Y->Z'

可行吗?我已经调查了collect()和UNWIND的使用情况,并用Google搜索直到我脸上的蓝色

想法?

*编辑I *

作为附录(并使问题更加困难)我的查询将返回路径集合(树,DAG),因此我需要为每个路径创建一个字符串树

2 个答案:

答案 0 :(得分:3)

REDUCE是你的朋友:

WITH reduce(s="",n in nodes(p) | s+n.name+"->") as str 
RETURN substring(str,0,length(str)-2)

或者如果您想保存额外的操作

RETURN reduce(s=head(nodes(p)).name, n in tail(nodes(p)) | s+"->"+n.name)

或与APOC

RETURN apoc.text.join([n in nodes(p) | n.name],"->")

答案 1 :(得分:1)

发现迈克尔·亨格(Michael Hunger)的一篇旧帖(2014年)答案:

http://grokbase.com/t/gg/neo4j/147ch1nj9b/concatenate-nodes-properties