如何解决Cypher:如何获取所有可能的可变长度链并输出节点属性的串联字符串?
首次使用neo4j。这就是我的图形。
中心节点的类型为Job
,子节点的类型为Word
。每个Word节点都具有属性word
(即Word.word
),该属性等效于所附图像中的节点标签,例如“ react”,“ php”等。
我要为每个子节点链生成一个串联的Word.word属性值字符串。例如,对于所附图形,我想返回类似以下内容的
[ "php","react js","javascript","full stack development","multithreaded load-balancing reactor engine"]
我当前的暴力手段如下:
match (webdev:Job {name:"Web Developer"}),(webdev)-[a00:Appearance]->(w1:Word),(w1)-[a01:Appearance]->(w2:Word),(w2)-[a02:Appearance]->(w3:Word)
return w1.word + ' ' + w2.word + ' ' + w3.word as name
union
match (webdev:Job {name:"Web Developer"}),(w1)-[a01:Appearance]->(w2:Word)
where not ((w2)-->())
return w1.word + ' ' + w2.word as name
union
match (webdev:Job {name:"Web Developer"}),(webdev)-[a00:Appearance]->(w1:Word)
where not ((w1)-->())
return w1.word as name
产生输出:
["multithreaded load-balancing reactor","php","javascript"]
这对于长度为
我的问题是:如何对所有长度可变的链进行概括?
解决方法
您可以使用variable length relationship模式:
MATCH p = (:Job {name:"Web Developer"})-[:Appearance*]->(leaf)
WHERE NOT (leaf)-[:Appearance]->()
RETURN REDUCE(s = NODES(p)[1].word,w IN NODES(p)[2..] | s + ' ' + w.word) AS name
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。